GestureRecognizer不适用于TableView

时间:2015-12-18 15:19:53

标签: ios swift uitableview

我在尝试过滤桌面视图内容后,一旦用户点击屏幕上的其他位置就试图找到隐藏键盘的方法。

但不知何故,当我添加一个UITapGestureRecognizer时,我的TableView会冻结,而且无法进一步进入应用程序。

这就是我的所作所为:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
self.view.addGestureRecognizer(tap)

func dismissKeyboard() {

    view.endEditing(true)
}

我在带有TextField的Blank ViewController上试过这个并且它可以工作。我错过了什么?有没有特定的方法将GestureRecognizer添加到表视图?因为一旦我添加了手势,它就会破坏一切。我也尝试使用resignFirstResponder,结果相同。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:2)

尝试将cancelsTouchesInView变量设置为false。默认为true,通过将其设置为false,您可以通过手势响应触摸,然后将手势返回到视图,以便tableView也可以响应。

tap.cancelsTouchesInView = false

Documentation on Apple

文件摘录:

  

当此属性为true(默认值)并且接收器识别其手势时,未处理的该手势的触摸不会传递到视图,并且通过发送到视图的touchesCancelled:withEvent:消息取消先前传递的触摸。如果手势识别器无法识别其手势或此属性的值为false,则视图将接收多点触控序列中的所有触摸。