ios - 使用 UIGestureRecognizer 传递的奇怪的 ios 触摸事件

标签 ios uigesturerecognizer hittest uiresponder

你好,我在 iOS 自定义 View 中观察到一些奇怪的东西,我在自定义 View 旁边有一个按钮,我正在寻找文档或你的答案来解释为什么我有这个观察

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

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

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

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

在我看来,当你将 regonizer 添加到按钮的容器 View 时,出于某种原因,按钮不知道如何处理事件,所以它要求它的 super View (在这种情况下为自定义 View )来处理它, 但为什么??我已经通过 UITouchUPInside 将事件处理程序绑定(bind)到按钮

请帮助我理解这一点

最佳答案

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

关于ios - 使用 UIGestureRecognizer 传递的奇怪的 ios 触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295576/

相关文章:

ios - Swift 3 多个 AVAudioPlayer

ios - dismissModalViewControllerAnimated 函数不关闭 View

ios - estimatedHeightForHeaderInSection 行为怪异

ios - 同时使用多个 UIGestureRecognizers,例如 Swift 3 中的 UIRotationGestureRecognizer 和 UIPanGestureRecognizer

ios - 识别后使UIGestureRecognizer失败的方法?

ios - hitTest:withEvent: 两次调用 sendActionsForControlEvents

ios - 如果在客户端生成 CKRecordID.recordName 有什么缺点吗?

ios - animateWithDuration 基于完全不相关的代码行执行动画

ios - 如何将触摸从 UIScrollView 移动到 UITableViewCell?

c# - 改进 WPF 可视层中的 HitTest