响应者链

本文详细介绍了iOS中UIResponder类及其响应者链的工作原理。解释了如何检测触碰视图并响应触碰事件,以及如何通过设置userInteractionEnabled属性来阻断响应者链。

响应者: UIResponder类是响应者类,所有继承UIResponder 的类,都是响应者。iOS中,所有能响应事件的对象,都是响应者。

响应者链:就是多个响应者组成的链。

检测触碰视图:

当接手一个事件时,

过程如下:

查询UIApplication是否有响应者,若有,往window找有没有子响应者/找window/找window上的view(viewcontroller)/找view的子视图。最终确认触摸的位置,完成查询。

响应触碰事件

与检测正好相反,优先考虑在子视图中响应事件。也就是说,如果子视图不处理事件,就会往查询的反方向传递事件,让后者处理。一直到最底的UIApplication,如果都没有响应这个事件,就会把事件抛弃。

响应过程如下:

触摸的view/Rootview/controller/window/delegate/UIApplication。

阻断响应者链

响应者链可以被打断,阻断自己的子视图不再检索。

userInteractionEnabled = NO;

默认为YES,当设置为YES时,事件可以正常传递给子视图。如果设置为NO时,就是告诉系统,我不再在响应者链中,此时,系统就会将其移出响应者链,则会导致其子视图的所有响应中断。不再对子视图进行检索。

 

转载于:https://www.cnblogs.com/Coder-GT/p/4869869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值