面试总结 - 响应链

事件的传递:(父控件到子控件)寻找合适的view。

当发生触摸事件时,runloop会通知UIApplication处理,UIApplication将该事件加入到事件队列里,
UIApplication再从事件队列里取出最前面的事件(FIFO),把事件传递程序的主窗口UIWindow处理,
UIWindow在试图层中找到最合适的view处理事件。

寻找最合适的view:
A.首先判断自己是不是可以响应事件
1.alpha <0.01;
2.userInteractionEnabled = NO;
3.hidden = YES.
B.触摸点是否在我身上
C.从后往前遍历子控件重复之前的两个步骤
D.如果没有符合条件的子控件,那么自己就是最合适的view

事件的响应:

如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图
在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
如果window对象也不能处理 ,则其将事件或消息传递给UIApplication对象如果UIApplication也不能处理该事件或消息,则将其丢弃

发布了218 篇原创文章 · 获赞 19 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/songzhuo1991/article/details/104883651
今日推荐