29、iOS开发中的触摸事件命中测试详解

iOS开发中的触摸事件命中测试详解

1. 触摸事件响应基础

当触摸情况发生变化时,应用程序会调用自身的 sendEvent(_:) 方法,进而调用窗口的 sendEvent(_:) 方法。窗口会通过调用相应的触摸方法来传递事件中的每个触摸点,具体流程如下:
1. 触摸首次出现时 :会考虑 isMultipleTouchEnabled isExclusiveTouch 的逻辑。若符合逻辑:
- 触摸事件会传递给命中测试视图的手势识别器组。
- 触摸事件会传递给命中测试视图本身。
2. 手势识别器识别出手势时 :对于与该手势识别器关联的任何触摸点:
- 会向触摸点所在视图发送 touchesCancelled(_:for:) 消息,且该触摸点不再传递给其视图。
- 若该触摸点还与其他手势识别器关联,其他手势识别器将被迫失败。
3. 手势识别器失败时 :无论是自行声明失败还是被迫失败,其触摸点将不再传递给它,但(除非另有规定)这些触摸点仍会传递给它们所在的视图。

下面通过 mermaid 流程图展示触摸事件传递的主要流程:

graph LR
    A[触摸情况变化] --> B[应用调用 sendEvent(_:)]
    B --> C[窗口调用 sendEvent(_:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值