-
1.Runloop会检测到屏幕的点击事件,然后分发事件(RunLoop相当于项目主管,把这个事情交给最合适的对象去处理,)
-
2.通过hitTest(返回最适合处理该事件的view) 及 pointInside(判断传过来的点是否在检测的view上) 找到最合适的view
-
3.事件的传递过程:Runloop-->UIApplication-->UIWindow-->RootViewController-->View-->递归的遍历View的子View(倒序)
-
4.找到最合适的处理该事件的view后,就会再去查找处理该事件的方法.按以上的顺序从后往前查找.
-
响应者链的特点:
-
响应者链通常是由视图构成的
-
一个视图的下一个响应者是他的视图控制器(如果有的话),然后再转给他的父视图
-
视图控制器的下一个响应者为其管理的视图的父视图
-
单例的窗口(UIWindow)的内容视图将指向窗口本身作为他的下一个响应者
-
单例的应用(UIApplication)是一个响应者链的终点,他的下一个响应者指向nil,以结束整个循环
-
如何 形象的去说明?
-
最开始就是RunLoop检测到屏幕点击,我们把Runloop可以看成是一个项目经理,检测到屏幕点击事件就相当于它接到了一个新项目,那接下来就需要寻找这个项目的负责人,怎么寻找呢,也就是要把该点击事件按能力大小顺序传递下去,一个个的考察,是否有能力做这个项目,如果中间考察到这个人已经能力不足以完成这个项目了,那同样排在它后面的人也就不需要再考察了,此时它的上一个人就是最适合的view.但是找到最适合的view之后还需要找到能响应该事件的方法,杀鸡焉用宰牛刀,那从最经济的角度考虑,当然是从以上的寻找顺序反过来找,一直找到UIApplication,如果还没找到,该事件就会被丢弃.也就是该项目就不能立项了.如果中间找到了一个能响应这个事件的方法,那项目就交给他去做就好了.
1.Runloop会检测到屏幕的点击事件,然后分发事件(RunLoop相当于项目主管,把这个事情交给最合适的对象去处理,)
2.通过hitTest(返回最适合处理该事件的view) 及 pointInside(判断传过来的点是否在检测的view上) 找到最合适的view
3.事件的传递过程:Runloop-->UIApplication-->UIWindow-->RootViewController-->View-->递归的遍历View的子View(倒序)
4.找到最合适的处理该事件的view后,就会再去查找处理该事件的方法.按以上的顺序从后往前查找.
响应者链的特点:
-
响应者链通常是由视图构成的
-
一个视图的下一个响应者是他的视图控制器(如果有的话),然后再转给他的父视图
-
视图控制器的下一个响应者为其管理的视图的父视图
-
单例的窗口(UIWindow)的内容视图将指向窗口本身作为他的下一个响应者
-
单例的应用(UIApplication)是一个响应者链的终点,他的下一个响应者指向nil,以结束整个循环
-
如何 形象的去说明?
-
最开始就是RunLoop检测到屏幕点击,我们把Runloop可以看成是一个项目经理,检测到屏幕点击事件就相当于它接到了一个新项目,那接下来就需要寻找这个项目的负责人,怎么寻找呢,也就是要把该点击事件按能力大小顺序传递下去,一个个的考察,是否有能力做这个项目,如果中间考察到这个人已经能力不足以完成这个项目了,那同样排在它后面的人也就不需要再考察了,此时它的上一个人就是最适合的view.但是找到最适合的view之后还需要找到能响应该事件的方法,杀鸡焉用宰牛刀,那从最经济的角度考虑,当然是从以上的寻找顺序反过来找,一直找到UIApplication,如果还没找到,该事件就会被丢弃.也就是该项目就不能立项了.如果中间找到了一个能响应这个事件的方法,那项目就交给他去做就好了.