Swift—响应链机制

当UIView被点击,事件传递过程为:
1、系统检测到手指触(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application的事件队列
2、UIApplication将处于任务队列最前端的事件向下分发,即UIWindow
3、UIWindow将事件向下分发,即UIView
4、UIView首先看自己是否能处理事件,触摸点是否在自己身上,能处理且触摸点在自己身上,就继续寻找子视图
5、遍历子控件,重复4
6、如果没有找到,即自己最适合处理事件;若自己不能处理,则不做任何处理


UIView不接受事件处理的情况(hitTest方法会检测这些):
1、alpha < 0.01
2、userInteractionEnabled = NO
3、hidden = True
4、超出父控件区域

如何确定最适合处理事件的控件?
1、自己能响应事件
2、触摸点在自己身上
3、从后往前遍历子控件,重复上两步
4、如果没有符合条件的,那么自己就是最适合处理的

当事件传递时,会调用hitTest方法返回最合适响应的view

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值