首页 > 其他 > 详细

iOS中事件相应的学习记录

时间:2014-02-09 16:15:31      阅读:340      评论:0      收藏:0      [点我收藏+]

touch事件分为3类

  • 触控事件(单点、多点触控以及各种手势操作)
  • 传感器事件(重力、加速度传感器等)
  • 远程控制事件(远程遥控iOS设备多媒体播放等)


触控事件分为加入了手势 也没有加入的情况,如果加入了手势,手势会截取点击事件.手势分为好几种,例如单击,长按,拖拽等.如果是单击事件的话状态就会是从可识别到成功或失败,如果是多点触摸就会由可识别,到失败或者开始,改变,已识别或取消.


UITouch

  • touchesBegan:withEvent:
  • touchesMoved:withEvent:
  • touchesEnded:withEvent:
  • touchesCancelled:withEvent:



响应者链

hit-test view

hitTest:withEvent:方法的处理流程如下:

首先调用当前视图的pointInside:withEvent:方法判断触摸点是否在当前视图内;

若返回NO,则hitTest:withEvent:返回nil;

若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从最顶层视图一直到到最底层视图,即从subviews数组的末尾向前遍历,直到有子视图返回非空对象或者全部子视图遍历完毕;

若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束;

如所有子视图都返回非,则hitTest:withEvent:方法返回自身(self)。


事件传递机制

view 向上一层传递,如果上一层不能影响还会向上一层继续传递,一直传递到rootVC,如果rootvc还不能相应的话则会传递给windows,如果windows还不能相应的话,会传递给application,如果继续不能相应则废弃这次触摸事件.


参考文章:iOS事件机制 Cocoa Touch事件处理流程--响应者链

iOS中事件相应的学习记录

原文:http://blog.csdn.net/ioswyl88219/article/details/18996381

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!