我有一个非常基本的UITableView,带有附加的UISearchBar,这里是发生的事情的流程
UITableView为空,用户点击UISearchBar,然后调出键盘。 用户点击“搜索”按钮后
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[searchBar resignFirstResponder]; //move the keyboard out of the way
//Code....
}
工作得很好,并将键盘移开,并填充UITableView。 问题是任何后续搜索尝试。
发生与之前相同的步骤,但键盘永远不会被解雇。我有一种感觉,其他东西正在成为响应者,我只需要一点清晰度来理解实际发生的事情。
答案 0 :(得分:30)
没有看到你的代码就很难猜到。但是,如果你包括:
[self.view endEditing:YES];
所有观点都会让第一响应者辞职。
答案 1 :(得分:2)
不完美,但确实适合我的情况。没有 dispatch_after
,将无法运作- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (!searchText.length) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[searchBar resignFirstResponder];
});
}
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
[self performSearchWithString:searchBar.text];
[searchBar resignFirstResponder];
}