奇怪的iOS触摸事件传递与UIGestureRecognizer

3

嗨,我在iOS自定义视图中观察到一些奇怪的事情,其中我在自定义视图中有一个按钮,我正在寻找文档或您的答案来解释为什么我有这个观察结果。

我有一个自定义视图(UIView子类),它包含一个简单的按钮,我通过addTarget:Action和UITouchUpInside绑定了按钮触摸事件,我只是将选择器绑定到一个简单的方法,该方法NSLog一条消息。

如果您显示自定义视图并点击按钮,则可以在控制台中看到消息,一切都按预期工作。

但是,如果您向自定义视图添加UIGestureReognizer并运行它,则单击按钮时不再打印消息,为什么??? 我进行了更深入的调查,并查看了CUSTOM VIEW中的hittest方法(包含按钮的视图)(我覆盖它,但我什么也没做,我只是再次调用super),hittest返回正确的视图,即当我点击按钮时,自定义视图的hittest方法返回UIButton

我不理解这里的事件链,请问有人能指出解释这一点的文档吗?

对我来说,当您将regonizer添加到按钮的容器视图中时,由于某种原因,按钮不知道如何处理事件,因此它要求其父视图(在这种情况下为自定义视图)来处理它,但为什么?? 我已经通过UITouchUPInside将事件处理程序绑定到按钮

请帮忙解答,我想理解这个问题。

1个回答

0

嗨,亚当,谢谢你的回复,它有效。但是你能解释一下发生了什么吗?我想我正在询问的是,当我像上面所述地拥有手势识别器时,当我触摸按钮时,谁首先处理触摸?是自定义视图容器(具有识别器)还是按钮?hittest表明按钮在触摸事件发生时是第一个哥们,但您的解决方案似乎暗示容器视图正在阻止事件? - user1233587
识别器首先处理它,然后您决定是否将其传递。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接