Ios 在不影响“取消”按钮的情况下关闭UISearchBar键盘

Ios 在不影响“取消”按钮的情况下关闭UISearchBar键盘,ios,swift,uisearchbar,uikeyboard,Ios,Swift,Uisearchbar,Uikeyboard,我试图重现iphone上联系人应用程序的功能。我有一个UISearchBar,当单击搜索按钮时,它会关闭键盘。但是,这会取消激活“取消”按钮,需要2次触摸才能激活。在contacts应用程序中,当单击搜索按钮并关闭键盘时,它不会被停用 所以我要问的是,如何在不禁用uiSearchBar上的取消按钮的情况下关闭键盘 我试过了 func searchBarSearchButtonClicked(searchBar: UISearchBar) { //Some other code //I hav

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

所以我要问的是,如何在不禁用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)

    }

委托方法解析您的搜索栏,因此您不必使用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)

委托方法解析您的搜索栏,因此您不必使用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)
这有点棘手。 试试看

这有点棘手。 试试看