我在尝试过滤桌面视图内容后,一旦用户点击屏幕上的其他位置就试图找到隐藏键盘的方法。
但不知何故,当我添加一个UITapGestureRecognizer时,我的TableView会冻结,而且无法进一步进入应用程序。
这就是我的所作所为:
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
self.view.addGestureRecognizer(tap)
func dismissKeyboard() {
view.endEditing(true)
}
我在带有TextField的Blank ViewController上试过这个并且它可以工作。我错过了什么?有没有特定的方法将GestureRecognizer添加到表视图?因为一旦我添加了手势,它就会破坏一切。我也尝试使用resignFirstResponder,结果相同。
有什么建议吗?谢谢!
答案 0 :(得分:2)
尝试将cancelsTouchesInView
变量设置为false。默认为true,通过将其设置为false,您可以通过手势响应触摸,然后将手势返回到视图,以便tableView也可以响应。
tap.cancelsTouchesInView = false
文件摘录:
当此属性为true(默认值)并且接收器识别其手势时,未处理的该手势的触摸不会传递到视图,并且通过发送到视图的touchesCancelled:withEvent:消息取消先前传递的触摸。如果手势识别器无法识别其手势或此属性的值为false,则视图将接收多点触控序列中的所有触摸。