iOS中事件响应的学习记录

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事件处理流程--响应者链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值