iOS的响应者链

响应者链

当一个硬件事件(触摸/锁屏/摇晃等)响应之后,首先由苹果注册的那个 Source1 就会触发回调调用Source0(具体请去了解Runloop流程),_UIApplicationHandleEventQueue() 会把 IOHIDEvent 处理并包装成 UIEvent 进行处理或分发,其中包括识别 UIGesture/处理屏幕旋转/发送给 UIWindow 等。UIWindow对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,这个过程称之为hit-test view。
注:hitTest:withEvent:方法将会忽略隐藏(hidden=YES)的视图,禁止用户操作(userInteractionEnabled=YES)的视图,以及alpha级别小于0.01(alpha<0.01)的视图
(1) UIWindow会用根视图进行寻找,一层层区分,最终找到第一响应者
(2)如果没有找到第一响应者,或者第一响应者没有处理该事件,则会沿着响应者链向上回溯

iOS的响应者链_第1张图片
回溯流程

你可能感兴趣的:(iOS的响应者链)