3

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

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

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

但是,如果您将 UIGestureReognizer 添加到自定义视图并运行它,当您单击按钮时,它不再打印消息,为什么?我做了更深入的调查,并通过查看自定义视图中的 hittest 方法(视图包含按钮)(我覆盖它,但我没有做任何事情,我只是再次调用 super),hittest 正在返回正确的视图,即当我单击按钮时,自定义视图的 hittest 方法正在返回 UIButton

我不明白这里的事件链,有人可以指出解释这一点的文档吗?

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

请帮助我想了解这个

4

1 回答 1

0

将识别器的cancelsTouchesInView属性设置为NO

于 2012-09-06T08:08:29.390 回答