一、响应者链
只要继承了UIResponder的对象就可作为事件的响应者,实际上UIControl继承了UIView,UIView又继承了UIResponder,即所有的对象都可作为事件的响应者。
当用户与某个空间交互时,该空间将作为”第一响应者(First Responder)”,第一响应者将作为响应者链的开始,该事件首先被发送给第一响应者(也就是用户触摸屏幕的控件)。事件将沿着响应者链一直向下传播,直到被某个响应者处理。
事件响应者链的典型传播路线为:
First Responder ——>First Responder的视图控制器(如果有)——>父容器(如果有)——>父容器的视图控制器(如果有)——>UIWindow ——>UIApplication ——>应用程序委托对象
如果某个事件经过上面完整的传播过程,依然没有被处理,那么该事件就会被丢弃。一般来说,上面响应者链的任何响应者处理该事件,该事件就会停止传播。
如果某个响应者”截获”了某个时间,那么该响应者要根据条件决定是否处理该事件。当响应者无法处理该事件时,则需要在处理方法中手动传递该事件。
<