iOS事件传递机制

一、事件是如何被视图接收到的?

当我们触摸屏幕的时候,系统会生成一个Event和point信息传递给当前的应用, 并通过以下两个方法传递并找到合适的响应者

//返回接收响应事件的视图
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

//判断触摸点是否在视图内
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
2、那么事件是从哪里开始传递的呢?
  1. 如下图.点击屏幕,传给当前的application的window对象.
  2. window本身就是一个UIView,从window开始《递归+倒序遍历》它的子试图.
  3. 每个被遍历到的试图,通过hittest和pointInSide方法判断自身或其子试图是否符合条件.
  4. 如果找到就返回对应的视图去处理触摸事件,找不到就忽略.
截屏2021-11-18 下午7.05.23.png
三、hittest细节
截屏2021-11-18 下午7.07.37.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容