iOS 触摸事件与视图控制器深度解析
1. 触摸事件处理基础
在 iOS 开发中,触摸事件的处理涉及到命中测试视图(hit - test view)及其父视图和手势识别器。当触摸事件发生时,需要决定哪个对象应该接收触摸方法调用。虽然可以在 UIWindow 或 UIApplication 的子类中重写 sendEvent(_:) 方法,但如今通常不需要这样做。在手势识别器出现之前,有时需要检测无法子类化的内置界面类对象上的触摸事件,而现在手势识别器很好地解决了这个问题。
1.1 手势识别器与视图的交互
当触摸事件首次出现并传递给手势识别器时,也会同时传递给命中测试视图,两者都会调用相同的触摸方法。这种方式很合理,因为即使存在手势识别器,视图对触摸的解释也不会被丢弃。
在多点触摸序列中,如果视图的所有手势识别器都未能识别出手势,那么视图的内部触摸解释将继续进行,就好像手势识别器不存在一样。例如,在一个应用中,用户可以点击卡片,每张卡片都有单点击和双点击手势识别器,同时卡片还会直接响应 touchesBegan(_:with:) 方法,通过降低自身不透明度来提供反馈,在 touchesEnded(_:with:) 和 touchesCancelled(_:with:) 方法中恢复不透明度,这样无论最终手势是什么,用户触摸卡片时都能立即看到反馈。
如果视图的某个手势识别器识别出了手势,那么该视图会收到 touchesCancelled(_:with:)
超级会员免费看
订阅专栏 解锁全文
38

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



