1

我有一个带有附加 UISearchBar 的 UITableView。当用户点击键盘上的搜索键时,我想向服务器发送请求以获取一些信息。一切正常,但 resignFirstResponder 在发送请求之前不会关闭键盘。这就是我所拥有的

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [self.mySearchBar resignFirstResponder];
    [self.brain searchInfo: mySearchBar.text];
    [self.tableView reloadData];
}

我也尝试过使用

[self.view endEditing:YES];

但没有成功...

4

3 回答 3

5

看起来像一个简单的线程问题。试试这个...

[searchBar performSelectorOnMainThread:@selector(resignFirstResponder) withObject:nil waitUntilDone:NO];
于 2013-09-02T02:11:59.960 回答
0

似乎 searchInfo: 方法需要很长时间。一旦您的请求完成,您可以将其更改为异步工作并在其他地方刷新 tableView。

于 2012-02-20T15:26:43.710 回答
0

仅当 runloop 结束时才执行 UI 更新。这意味着 resignFirstResponder 仅在您的searchBarSearchButtonClicked:方法(及其调用方法)完成后才会生效。由于您的searchInfo:方法必须等到它得到响应,所以 resign 方法在此之前将不起作用。

重写您的应用程序以使用发送异步请求的 NSURLConnection。Apple 有一篇关于如何做到这一点的文章。这是更多的工作,但你应该走这条路来提高你的应用程序的质量。

于 2012-02-20T18:34:45.877 回答