响应者: UIResponder类是响应者类,所有继承UIResponder 的类,都是响应者。iOS中,所有能响应事件的对象,都是响应者。
响应者链:就是多个响应者组成的链。
检测触碰视图:
当接手一个事件时,
过程如下:
查询UIApplication是否有响应者,若有,往window找有没有子响应者/找window/找window上的view(viewcontroller)/找view的子视图。最终确认触摸的位置,完成查询。
响应触碰事件
与检测正好相反,优先考虑在子视图中响应事件。也就是说,如果子视图不处理事件,就会往查询的反方向传递事件,让后者处理。一直到最底的UIApplication,如果都没有响应这个事件,就会把事件抛弃。
响应过程如下:
触摸的view/Rootview/controller/window/delegate/UIApplication。
阻断响应者链
响应者链可以被打断,阻断自己的子视图不再检索。
userInteractionEnabled = NO;
默认为YES,当设置为YES时,事件可以正常传递给子视图。如果设置为NO时,就是告诉系统,我不再在响应者链中,此时,系统就会将其移出响应者链,则会导致其子视图的所有响应中断。不再对子视图进行检索。