一,事件的传递
UIApplication-----传递事件-----"被触摸的UIview".理解红色的文字很重要,即使被直接触摸,也不一定在当前视图处理事件.要知理由,请看下文解说.
如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件.
那么系统是怎么找到是哪个视图来处理当前的触摸事件呢?
从UIApplication出发,一个一个的视图往下找,判断当前视图是否能接收触摸事件.然后在判断触摸点是否发生在自己的身上.一直重复.
特别注意:事件的传递过程中,是不会处理事件的.只是一个传递的过程.
二,事件链
通过上面的分析,这里即将引出一个事件链的概念.
事件链的理解,正好与事件的传递相反.在找到"最终"的"被触摸视图UIView"的情况下.还要往上寻找,谁能处理触摸事件.
如果当前的视图没有处理触摸事件的能力(没有实现方法),那就会一直往上寻找.如果找到了,那么就会执行这个触摸事件.如果调用了"super",那么还会往上寻找,否者终止.
(自学一下,控制器事件处理吧)
特别注意:A视图,B视图,C视图.如果B视图没有触摸事件的能力,但是在C视图中调用了"super".那么将有A,C视图来处理这个触摸事件.
谁是父事件对象?
1,如果这个视图是控制器的视图,那么这个视图的父事件对象是控制器.
2,如果这个视图不是控制器的视图,那么这个视图的父事件对象是父视图.