关闭 UISearchBar 键盘而不影响取消按钮

Posted

技术标签:

【中文标题】关闭 UISearchBar 键盘而不影响取消按钮【英文标题】:Dismiss UISearchBar keyboard without affecting cancel button 【发布时间】:2015-08-23 10:12:34 【问题描述】:

我正在尝试重现可以在 iphone 上的联系人应用程序中看到的功能。我有一个 UISearchBar 在单击搜索按钮时会关闭键盘。但是,这会停用取消按钮,并且需要 2 次触摸才能激活。在联系人应用程序上,当单击搜索按钮并关闭键盘时,它不会被停用。

所以我要问的是如何在不停用 uiSearchBar 上的取消按钮的情况下关闭键盘?

我试过了

func searchBarSearchButtonClicked(searchBar: UISearchBar) 

//Some other code

//I have Tried
//Attempt 1
 self.searchBar.endEditing(true)
//Attempt 2
  self.searchBar.resignFirstResponder()
//Attempt 3
  var textFieldInsideSearchBar = searchBar.valueForKey("searchField") as? UITextField
  textFieldInsideSearchBar.endEditing(true)

    

【问题讨论】:

【参考方案1】:

Delegate 方法会解析您的 searchBar,因此您不必使用 self.searchBar,这可能是问题之一。我通常使用您的 “尝试 2” 中的逻辑。

你可以尝试实现这个:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar)

并致电searchBar.resignFirstResponder()

如果不起作用,则尝试实现此方法并返回true

func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool

如果您将 UISearchBar 与 UISearchDisplatController 结合使用,请在 searchDisplayController 上尝试此方法:

func setActive(_ visible: Bool, animated animated;: Bool)

【讨论】:

【参考方案2】:

这有点棘手。 试试吧,

[self.searchBar resignFirstResponder];
[(UIButton *)[self.searchBar valueForKey:@"_cancelButton"] setEnabled:YES];

【讨论】:

以上是关于关闭 UISearchBar 键盘而不影响取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

使取消按钮下键盘

UISearchBar - 当点击取消按钮时,如何防止关闭 scopeBar?

IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题

UISearchbar clearButton 强制键盘出现

即使在键盘关闭时也保持搜索栏取消按钮的颜色

如何触发 UISearchBar 中的取消按钮?