事件及响应者链

1. 基本概念

   UIEvent:事件,是有硬件扑捉的一个表示用户操作设备的对象。
   
   主要由三类组成:触摸事件、晃动事件、远程控制事件。
   
   触摸事件:用户通过触摸设备屏幕操作对象,输入数据,支持多点触摸,包含一个到多个触摸点。
   
   触摸的四个方法:
   
   touchesBegan:withEvent           touchesMove:withEvent:
   
   touchesEnd:withEvent             touchesCancled:withEvent:
   
2. 响应者链

   UIApplication -> UIWindow -> 找到最合适处理事件的控件 -> 空间调用touches方法 -> 判断是否实现了touches
   
   方法 ->没有实现会将事件传递给上一个响应者 ->找到上一个响应者。
   
   如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视在视图层次结构的最顶级视图,如
   
   果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理如果window对象也不处理,则其将事件或
   
   消息传递给UIApplication对象如果UIApplication也不能处理该事件或消息,则将其丢弃

3.响应者链条有什么作用?

  可以让一个触摸事件发生的时候让多个响应者同时响应该事件。
  
4. 交互相关的属性

  userInteractionEnabled的默认是YES,如果设置为NO则不响应用户事件,并且把当前空间从事件队列中删除,也就是说设
  
  置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subView无法响应。
  
  multiple TouchEnabled 默认为NO,如果设置为YES则支持多点触摸。
  
  exclusive Touch默认为NO,如果设置为YES则当前的UIView会独占整个个Touch事件,具体来说,就是如果UIView设置了
  
  这个属性为YES,那么在手指离开屏幕前其他view不会响应任何touch事件。


你可能感兴趣的:(事件及响应者链)