UISearchBar 和 resignFirstResponder

Posted

技术标签:

【中文标题】UISearchBar 和 resignFirstResponder【英文标题】:UISearchBar and resignFirstResponder 【发布时间】:2010-08-06 13:25:48 【问题描述】:

我有一个带有附加 UISearchBar 的非常基本的 UITableView,下面是发生的流程

UITableView 为空,用户点击 UISearchBar,并调出键盘。 一旦用户点击搜索按钮

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

工作得很好,将键盘移开,并填充 UITableView。 问题在于任何后续的搜索尝试。

执行与之前相同的步骤,但键盘从未关闭。我感觉有其他东西正在成为响应者,我只需要稍微澄清一下就可以了解实际发生的情况。

【问题讨论】:

【参考方案1】:

没有看到你的代码很难猜到。但是,如果您包括:

[self.view endEditing:YES];

所有视图都将放弃第一响应者。

【讨论】:

我在包含 UITextFields 的 UICollectionView 单元格中遇到了类似的问题,这为我解决了,谢谢! 不适用于func searchBarCancelButtonClicked(searchBar: UISearchBar) 协议【参考方案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];

【讨论】:

以上是关于UISearchBar 和 resignFirstResponder的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 和 resignFirstResponder

UIWebView 和 UISearchBar 用于搜索

iOS之让UISearchBar搜索图标和placeholder靠左显示

iOS学习—— UISearchBar的使用

UISearchBar 宽度动画和 AutoLayout

iOS 13 UISearchBar 外观和行为