在 UISearchBar 中按“x”时关闭键盘

Posted

技术标签:

【中文标题】在 UISearchBar 中按“x”时关闭键盘【英文标题】:Dismiss keyboard when pressing "x" in UISearchBar 【发布时间】:2014-03-04 15:57:29 【问题描述】:

如果我将辞职代码放在我的 if 条件中,键盘不会辞职,如果我评论 if 条件,我的键盘就会辞职。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

    if (searchText.length == 0) 
        [searchBar resignFirstResponder];
    

我想在用户按下“x”按钮时退出键盘,即 UISearchBar 文本为空时。有没有办法做到这一点?

【问题讨论】:

你有答案 [here][1] 在其他 *** 帖子 [1]:***.com/a/4200431/921789 那个对我没用。这个更好***.com/a/9084809/516765 【参考方案1】:

只需让第一响应者辞职,但在下一个运行循环中,如下所示:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 

    if ([searchText length] == 0) 
    
        [searchBar performSelector:@selector(resignFirstResponder)
                   withObject:nil 
                   afterDelay:0];
    

经过测试,它可以工作。

【讨论】:

我这样做但使用了@selector(resignFirstResponder)【参考方案2】:

为 switf 3 更新:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) 
    if searchBar.text == nil || searchBar.text == ""
    
       searchBar.perform(#selector(self.resignFirstResponder), with: nil, afterDelay: 0.1)
    

【讨论】:

【参考方案3】:

添加取消按钮以查看加载和添加方法 -> searchBarCancelButtonClicked

searchBar.showsCancelButton = true

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) 
  searchBar.resignFirstResponder()

【讨论】:

【参考方案4】:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
NSRange foundRange = [searchText rangeOfString:@"x"];
if (foundRange.location != NSNotFound) 
    if (searchText.length == 0) 
        [searchBar resignFirstResponder];
        
    

【讨论】:

我认为问题所指的不是“x”按钮。

以上是关于在 UISearchBar 中按“x”时关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章

使用 UISearchBar 关闭键盘,而不让第一响应者辞职

UISearchbar clearButton 强制键盘出现

防止在本机反应中按下 TextInput 时显示系统键盘

在 UISearchBar 中按下 Search/Return 时调用啥方法?

在 WKWebView 中按 Return 键关闭键盘

停止 UISearchDisplayController 以关闭搜索栏键盘