iOS:响应链的原理

发布时间 2023-04-21 13:43:24作者: dulinshun

iOS中不是所有的对象都能响应的,只有继承 UIResponder 的对象才能进行响应处理事件,称之为响应者对象

常见的响应者对象有:UIView, UIViewController, UIApplication

  1. 响应链的流程:
1. 当产生某一个触摸事件的时候,这个触摸事件回添加到UIApplication管理的事件队列中。
2. UIApplication 将事件向下分发,即 UIWindow
3. UIWindow 继续将事件向下分发,即UIView
4. UIView 查看自己是否能够处理事件,以及触摸点是否在自己身上。如果能,则继续寻找子视图
5. 遍历子空间,重复 4 步骤
6. 如果没有找到能够处理的子视图,则自己处理。
  1. 响应链不能处理的几种情况
1. alpha = 0
2. hidden = YES
3. userInterfaceEnable = NO
  1. hitTest:withEvent 函数
有时候为了满足项目需求,需要自定义一个合适的 View 来响应触摸事件,可以使用该方法来实现