【发布时间】:2016-12-22 09:41:36
【问题描述】:
众所周知,我们使用下面的代码可以endEditingsearchBar的firstResponder,但是如果有scrollView或者tableView,效果就不一样了。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
self.view.endEditing(true)
}
我将tapGesture 添加到tableView,所以我可以endEditing searchBar 的firstResponder。
但是将tapGesture添加到我的tableView后,tableView的tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)函数就不再起作用了。
我该如何解决这个问题?
加法
我有用的代码如下:
let tap:UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action: #selector(tapTableView))
self.tableView.addGestureRecognizer(tap)
func tapTableView() {
self.searchBar.endEditing(true)
}
【问题讨论】:
-
除非您检查它正在触摸的视图,否则它将覆盖所有触摸,相反您可以考虑在内置的 tableview 上使用 keyboardDismiss,例如 .interactive
-
@SeanLintern88 你是什么意思在 tableView 上使用 kwyboardDismiss ?
标签: ios uitableview uitapgesturerecognizer