UITapGestureRecognizer与didSelectRowAtIndexPath冲突

时间:2016-03-11 09:54:59

标签: xcode swift swift2

在我问这个之前,我尝试其他解决方案并且它不起作用

这是我的代码

override func viewDidLoad() {
    super.viewDidLoad()

    let tapGesture = UITapGestureRecognizer(target: self, action: "didTouchBoard:")
    view.addGestureRecognizer(tapGesture)
    tapGesture.cancelsTouchesInView = true
}

当我点击任何地方它会隐藏键盘(如果存在),但是如果我点击tableviewcell或collectionviewcell,它将不会点击

我尝试这个tapGesture.cancelsTouchesInView,但不能正常工作

2 个答案:

答案 0 :(得分:4)

如果您希望表视图接收触摸,请更改tapGesture.cancelsTouchesInView

tapGesture.cancelsTouchesInView = false

答案 1 :(得分:3)

您必须添加UITextFeildDelegate方法才能在视图中启用和禁用点击手势

  1. 在视图外声明tapGesture确实加载方法
  2. let tapGesture = UITapGestureRecognizer(target: self, action: "didTouchBoard:")

    1. 实施以下方法

       func textFieldDidBeginEditing(textField: UITextField) {
      self.view.addGestureRecognizer(self.tapGesture) }
      

      func textFieldDidEndEditing(textField:UITextField){         self.view.removeGestureRecognizer(self.tapGesture)     }

    2. 我认为这可能对你有用