ios触摸事件的产生和传递

  1. 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中
  2. UIApplication会从事件队列中取出最前面的事件并将事件分发下去以便处理,通常先发送给应用程序的主窗口(keyWindow)
  3. 主窗口会在市图层次结构中找到一个最合适的视图来处理触摸事件
  4. 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理
  5. 触摸事件的传递是从父控件传递到子控件(如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件

 

UIView不能接收触摸事件的三种情况

  1. 不接收用户交互:userInteractionEnabled = NO

  2. 隐藏: hidden = YES;

  3. 透明: alpha = 0.0~0.01;

  提示:UIImageView的userInteractionEnabled默认NO,因此它及其子控件默认是不接收触摸事件的

 

如何找到最适合的控件来处理事件

  1. 自己是否能接收触摸事件

  2. 触摸点是否在自己身上

  3. 从后往前遍历子控件,重复前面的两个步骤

  4. 如果没有符合条件的子控件,那么就自己最适合处理

posted @ 2016-01-23 20:42  xiaocaoera  阅读(152)  评论(0编辑  收藏  举报