响应者链

响应者: UIResponder类是响应者类,所有继承UIResponder 的类,都是响应者。iOS中,所有能响应事件的对象,都是响应者。

响应者链:就是多个响应者组成的链。

检测触碰视图:

当接手一个事件时,

过程如下:

查询UIApplication是否有响应者,若有,往window找有没有子响应者/找window/找window上的view(viewcontroller)/找view的子视图。最终确认触摸的位置,完成查询。

响应触碰事件

与检测正好相反,优先考虑在子视图中响应事件。也就是说,如果子视图不处理事件,就会往查询的反方向传递事件,让后者处理。一直到最底的UIApplication,如果都没有响应这个事件,就会把事件抛弃。

响应过程如下:

触摸的view/Rootview/controller/window/delegate/UIApplication。

阻断响应者链

响应者链可以被打断,阻断自己的子视图不再检索。

userInteractionEnabled = NO;

默认为YES,当设置为YES时,事件可以正常传递给子视图。如果设置为NO时,就是告诉系统,我不再在响应者链中,此时,系统就会将其移出响应者链,则会导致其子视图的所有响应中断。不再对子视图进行检索。

原文地址:https://www.cnblogs.com/Coder-GT/p/4869869.html