手势识别器阻止触摸已结束

Posted

技术标签:

【中文标题】手势识别器阻止触摸已结束【英文标题】:Gesture Recognizer Blocking TouchesEnded 【发布时间】:2013-12-02 10:53:18 【问题描述】:

在我的应用程序中,用户点击 3 次,然后使用 drawRect 绘制一个角度。直到最近,这曾经完美地工作。我在父视图中添加了一个手势识别器,一个 uiview,(绘图发生在这个视图的一个子视图上,一个子类的 uiview)。现在,当我点击时,绘图子类不会调用 touches end,但是如果我移动手指,子类会调用 touchesMoved。我知道问题出在父级的手势识别器上,因为当我删除它时,一切都会恢复正常。为什么会这样?任何意见将不胜感激,谢谢。

【问题讨论】:

【参考方案1】:

我遇到了类似的问题 - 我无法触摸按钮,但我设法使用以下代码对其进行了排序:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
     // Replace to your view with button
    if ((touch.view isDescendantOfView:YOURVIEW))
    
        return NO;
    
    return YES;

尝试将文本 YOURVIEW 替换为您遇到此问题的视图,并记住为您的手势识别器设置委托。

【讨论】:

嗯,没用.. 找到了不同的解决方法,仍然不知道为什么 touchesEnded 没有被调用.. 我的子类位于所有视图的顶部。编辑:问题是我将手势识别器设置为 self.primaryView.superview。 SUPERVIEW 导致了这个问题。删除它,我是金色的。

以上是关于手势识别器阻止触摸已结束的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序~触摸相关事件(拖拽操作手势识别多点触控)

带有手势识别器的 UITextView - 有条件地向前触摸到父视图

确定手势识别器中触摸的节点

如何检测同时滑动和触摸结束

iOS开发系列--触摸事件手势识别摇晃事件耳机线控

iOS开发系列--触摸事件手势识别摇晃事件耳机线控