响应链 和 处理

响应链

  1. 寻找事件的最佳响应视图是通过对视图调用hitTest和pointInside完成的
  2. hitTest的调用顺序是从UIWindow开始,对视图的每个子视图依次调用,子视图的调用顺序是从后面往前面,也可以说是从显示最上面到最下面
  3. 遍历直到找到响应视图,然后逐级返回最终到UIWindow返回此视图

处理者

1.找到最适合的响应视图后事件会从此视图开始沿着响应链nextResponder传递,直到找到处理事件的视图,如果没有处理的事件会被丢弃。
2.如果视图有父视图则nextResponder指向父视图,如果是根视图则指向控制器,最终指向AppDelegate, 他们都是通过重写nextResponder来实现。

注意:
1.Alpha=0、子视图超出父视图的情况、userInteractionEnabled=NO、hidden=YES视图会被忽略,不会调用hitTest
2.父视图被忽略后其所有子视图也会被忽略

你可能感兴趣的:(响应链 和 处理)