1.触摸事件的处理过程:
当用户点击屏幕发生触摸事件后,会经过一系列的传递,找到最适合响应的那个视图控件来处理触摸事件。
找到该控件后,就会调用该控件的touches方法来做具体的事件处理
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
这些事件的默认处理方法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理。
2.一次完整的触摸事件的响应过程:
UIApplication--->UIWindow--->递归找到最适合处理该事件的控件--->调用该控件的touches方法--->判断是否实现touches方法--->没有实现默认将事件传递给上一个响应者--->找到上一个响应者......--->UIApplication,如果UIApplication没有处理该事件,则将该事件丢弃。
3.如何找到上一个响应者:
如果该view是视图控制器的根视图,则他的上一个响应者是视图控制器;否则的话,他的上一个响应者是它的父视图。
4.重要概念:
(1)响应者链:由多个响应者链接在一起组成的链条称为响应者链。
(2)响应者:继承自UIResponder的对象称之为响应者对象(UIApplication、UIView、UIViewController)。