如何在UISearchBar touches上关闭键盘开始于Swift 4

时间:2019-05-23 19:39:57

标签: ios swift

我已经使用UISearchBarDelegate在表视图中搜索了项目。 我已经像这样将搜索栏变量的委托设置为self

searchBar.delegate = self 

touchesBegan功能我曾经用来隐藏键盘。

  override func touchesBegan(_ touches: Set<UITouch>,
                           with event: UIEvent?) {
    self.view.endEditing(true)
}

当我触摸搜索栏以外的任何地方时,都不会触发。虽然同样的事情可以与UITextField一起正常工作。

2 个答案:

答案 0 :(得分:1)

也许尝试:

searchBar.endEditing(true)

甚至更好:

searchBar.resignFirstResponder()

编辑:

现在,您已经说明了问题所在,这是您可以做的:

func searchBarTextDidBeginEditing(sender: UISearchBar) {
     self.tableView.userInteractionEnabled=false
}

然后在searchBarTextDidEndEditing上重新启用。

否则,您实际上可以将手势识别器这样添加到tableView中:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tableView.addGestureRecognizer(tapGesture)

答案 1 :(得分:0)

  

(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar此委托方法将帮助您执行上述任务。

a1.tobytes() == a2.tobytes()
# False