didSelectRowAtIndexPath 与 Tap Gesture Recognizer 冲突
didSelectRowAtIndexPath is in conflict with Tap Gesture Recognizer
我通过 Storyboard 在 ViewController 中设置了点击手势识别器
(因此视图中的所有点击,如果显示此键盘,将隐藏键盘)
问题是现在,我在这个视图中添加了一个 TableView,当我点击一个单元格时,使用 Tap Gesture Recognizer 设置的方法是调用,而不是 didSelectRowAtIndexPath
。
"funny" 的事情是,如果我在单元格上停留 2 秒或更长时间,将调用委托 didSelectRowAtIndexPath
,而不是 TapGestureRecognizer
方法。
你们能解释一下这里发生了什么吗?我哪里错了,为什么错了?
你的UITapGestureRecognizer
可能cancels the touch event成功识别触摸。
尝试设置
tapGestureRecognizer.cancelsTouchesInView = NO;
要更深入地阅读此主题,have a look an the conceptual docs on gesture recognition。
更好的方法是不要使用 didSelectRowAtIndexpath 方法。
如果您必须在 table 视图单元格上实现手势,则在 cellForRowAtIndexpath 中创建点击手势并使用标签识别特定的单元格点击。
我通过 Storyboard 在 ViewController 中设置了点击手势识别器 (因此视图中的所有点击,如果显示此键盘,将隐藏键盘)
问题是现在,我在这个视图中添加了一个 TableView,当我点击一个单元格时,使用 Tap Gesture Recognizer 设置的方法是调用,而不是 didSelectRowAtIndexPath
。
"funny" 的事情是,如果我在单元格上停留 2 秒或更长时间,将调用委托 didSelectRowAtIndexPath
,而不是 TapGestureRecognizer
方法。
你们能解释一下这里发生了什么吗?我哪里错了,为什么错了?
你的UITapGestureRecognizer
可能cancels the touch event成功识别触摸。
尝试设置
tapGestureRecognizer.cancelsTouchesInView = NO;
要更深入地阅读此主题,have a look an the conceptual docs on gesture recognition。
更好的方法是不要使用 didSelectRowAtIndexpath 方法。
如果您必须在 table 视图单元格上实现手势,则在 cellForRowAtIndexpath 中创建点击手势并使用标签识别特定的单元格点击。