在不影响取消按钮

时间:2015-08-23 10:12:35

标签: ios swift uisearchbar uikeyboard

我正在尝试重现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)

    }

2 个答案:

答案 0 :(得分:0)

委托方法会解析您 searchBar ,因此您不必使用 self.searchBar ,这可能是其中一个问题。我通常使用“Attempt 2”中的逻辑。

您可以尝试实现此目的:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar)

并致电searchBar.resignFirstResponder()

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

func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool

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

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

答案 1 :(得分:0)

这有点棘手。 尝试,

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