2010-08-06 25 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]; 
}