2010-08-06 82 views
11

我有一个附加的UISearchBar一个非常基本的UITableView,这里是发生了什么的UISearchBar和resignFirstResponder

的UITableView是空的流量,用户点击的UISearchBar,并带来了键盘。 一旦用户点击搜索按钮

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; //move the keyboard out of the way 
    //Code.... 
} 

工作得很好,并且移动键盘的方式进行,并填充的UITableView。 问题是任何后续的搜索尝试。

与之前相同的步骤发生,但键盘从未被解雇。我有一种感觉,别的东西正在成为响应者,我只需要一点点清晰的理解实际发生的事情。

回答

29

没有看到你的代码很难猜测。但是,如果您包含以下内容:

[self.view endEditing:YES]; 

所有视图都将退出第一响应者。

+0

这对我来说非常适合我! – Raptor 2011-09-27 06:34:23

+0

我有UICollectionView单元格包含UITextFields类似的问题,这解决了我,谢谢! – thomh 2013-02-08 14:56:52

+0

不能在'func searchBarCancelButtonClicked(searchBar:UISearchBar)'协议 – jose920405 2015-07-11 16:49:09

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]; 
}