12.响应者链

来源:互联网 发布:linux bash 逻辑表达式 编辑:程序博客网 时间:2024/05/22 02:55

什么是响应者链

由多个响应者对象组成的链。

UIResponder.响应者类。

iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应
者。
系统定义了⼀个抽象的⽗类UIResponder来表⽰响应者。其⼦类都
是响应者。

硬件检测到触摸操作,会将信息交给UIApplication,开始检测。
UIApplication -> window -> viewController -> view -> 检测所有⼦
视图
最终确认触碰位置,完成响应者链的查询过程。

检测到响应者后,实现touchesBegan:withEvent:等⽅法,即处理事
件。

如果响应者没有处理事件,事件会向下传递。如果没有响应者处理,
则丢弃触摸事件。

事件处理的顺序与触摸检测查询相反。
触摸的⼦视图 -> view -> viewController -> window -> UIApplication

响应者链可以被打断。⽆法完成检测查询过程。
视图类的属性 : userInteractionEnabled。关闭后能阻断查询过
程。

练习3

将UIButton作为UILabel的⼦视图。

通过设置userInteractionEnabled,查看效果。

结果UIButton跳过了查询过程

如果UIButton设置阻断查询过程
UIButton.userInteractionEnabled = NO;

结果UIButton无法查询到也就是无法响应

UILabel和UIImageView的userInteractionEnabled默认是NO;

0 0