触摸事件的传递机制

以一个按钮点击事件为例:
当用户点击按钮时,iphone OS获取到了 “单击”,这一事件的发生,记录了“单击”这一操作的所有信息以UITouch和UIEvent的形式存储在当前应用程序的事件队列中。负责管理应用程序的UIApplication单件将对象将事件从队列的顶部取出,然后派发下去到焦点窗口即拥有当前用户事件焦点的窗口(当前应用程序窗口UIWindow),由uiwindow对象将它再发送给第一响应者进行处理,第一响应者就是当前的button。
UIResponser是所有相应对象的基类。
基本概念:

响应者对象是可以响应事件并对其进行处理的对象。UIResponder 是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口。UIApplication UIView、和所有从UIView 派生出来的 UIKit 类(包括 UIWindow )都直接或间接地继承自 UIResponder 类。

第一响应者是应用程序中当前负责接收触摸事件的响应者对象(通常是一个 UIView 对象)。UIWindow 对象以消息的形式将事件发送给第一响应者,使其有机会首先处理事件。如果第一响应者没有进行处理,系统就将事件(通过消息)传递给响应者链中的下一个响应者,看看它是否可以进行处理。

响应者链是一系列链接在一起的响应者对象,它允许响应者对象将处理事件的责任传递给其它更高级别的对象。随着应用程序寻找能够处理事件的对象,事件就在响应者链中向上传递。响应者链由一系列下一个响应者组成,其顺序如下:

1.2.

3.4.

 第一响应者将事件传递给它的视图控制器(如果有的话),然后是它的父视图。
 类似地,视图层次中的每个后续视图都首先传递给它的视图控制器(如果有的话),然后是它的
父视图。

最上层的容器视图将事件传递给 UIWindow 对象。UIWindow 对象将事件传递给 UIApplication 单件对象。

如果应用程序找不到能够处理事件的响应者对象,则丢弃该事件。

响应者链中的所有响应者对象都可以实现UIResponder 的某个事件处理方法,因此也都可以接收事件消息。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值