iOS开发中的触摸事件命中测试详解
1. 触摸事件响应基础
当触摸情况发生变化时,应用程序会调用自身的 sendEvent(_:) 方法,进而调用窗口的 sendEvent(_:) 方法。窗口会通过调用相应的触摸方法来传递事件中的每个触摸点,具体流程如下:
1. 触摸首次出现时 :会考虑 isMultipleTouchEnabled 和 isExclusiveTouch 的逻辑。若符合逻辑:
- 触摸事件会传递给命中测试视图的手势识别器组。
- 触摸事件会传递给命中测试视图本身。
2. 手势识别器识别出手势时 :对于与该手势识别器关联的任何触摸点:
- 会向触摸点所在视图发送 touchesCancelled(_:for:) 消息,且该触摸点不再传递给其视图。
- 若该触摸点还与其他手势识别器关联,其他手势识别器将被迫失败。
3. 手势识别器失败时 :无论是自行声明失败还是被迫失败,其触摸点将不再传递给它,但(除非另有规定)这些触摸点仍会传递给它们所在的视图。
下面通过 mermaid 流程图展示触摸事件传递的主要流程:
graph LR
A[触摸情况变化] --> B[应用调用 sendEvent(_:)]
B --> C[窗口调用 sendEvent(_:)
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



