iOS中不是所有的对象都能响应的,只有继承 UIResponder 的对象才能进行响应处理事件,称之为响应者对象
。
常见的响应者对象有:UIView, UIViewController, UIApplication
- 响应链的流程:
1. 当产生某一个触摸事件的时候,这个触摸事件回添加到UIApplication管理的事件队列中。
2. UIApplication 将事件向下分发,即 UIWindow
3. UIWindow 继续将事件向下分发,即UIView
4. UIView 查看自己是否能够处理事件,以及触摸点是否在自己身上。如果能,则继续寻找子视图
5. 遍历子空间,重复 4 步骤
6. 如果没有找到能够处理的子视图,则自己处理。
- 响应链不能处理的几种情况
1. alpha = 0
2. hidden = YES
3. userInterfaceEnable = NO
hitTest:withEvent
函数
有时候为了满足项目需求,需要自定义一个合适的 View 来响应触摸事件,可以使用该方法来实现
标签:触摸,iOS,响应,事件,原理,UIApplication,UIView
From: https://www.cnblogs.com/dulinshun/p/ios-xiang-ying-lian-de-yuan-li.html