ios触摸事件二 :事件传递
来源:互联网 发布:婚纱照一键修图软件 编辑:程序博客网 时间:2024/06/01 20:00
了解了UIEvent以及UITouch之后,那么事件在iOS是如何传递的呢?
事件的传递:
从事件发生到其处理的对象,传递要经过特殊的一段过程。当用户点击设备屏幕时,IOS捕捉到一系列的触摸,将其打包到UIEvent对象中并放置到应用程序活动事件队列中。UIApplication对象从事件队列中取出最前面的事件并将其分发。通常,其发送事件给应用程序的主窗口——UIWindow实例,再由窗口对象发送给”第一响应者(触摸的视图)”处理。
响应者链:
响应者对象是一个能够接收并处理事件的对象。注意在IOS中不是任何对象都能处理事件,只有直接或间接继承了UIResponder的对象才可作为事件的响应者。UIResponder是所有响应者对象的基类。在IOS的UI控件中,不是继承了UIView,就是继承了UIControl,实际上UIControl继承了UIView,UIView又继承了UIResponder.
/*UIControl ---> UIView ---> **UIResponder** --->NSObject*/
所以,实际上所有的UI控件都可以作为事件的响应者。即UIView、UIViewController等都可以作为响应者对象。
响应者链表示一系列的响应者对象。事件被交由第一响应者(触摸的那个view)对象,如果第一响应者不处理,事件被沿着响应者链向上传递,交给下一个响应者(next responder).
当用户与某个控件交互时,该空间将会作为”第一响应者(Firsr Responder)”,第一响应者将作为响应者链的开始,该事件首先被发送给第一响应者(即用户触摸屏幕的控件),事件将沿着响应者链一只向下传递,直到被某个响应者处理。
注意:若某个事件被某一个响应者处理,则该事件就会停止传递
����������������������响应者链的事件传递过程:
- 通常来说,第一响应者都是UIView控件或UIView子类控件,当用户触摸该空间后,事件最先由该控件本身处理
- 如果该控件自身不处理事件,事件就会被传递到它对应的视图控制器
- 如果该视图控制器不存在或不处理事件,事件就会传递到包含该控件的父view
- 如果该父view仍不处理事件,事件就会传递到父view控件对应的视图控制器
- 父view控件的视图控制器不存在或不处理事件,那么事件被传递到父view控件的父view。。。。。
- 如果仍然不处理事件的话,事件会一直传递到UIWindow
- 如果UIWindow对象也不处理,事件则会传递到UIApplication的委托对象(即AppDelegate)
如果UIApplication也不能处理事件,那么不好意思,事件被丢弃。
呼呼。。传了这么久有点累了,上图:
另外注意UIView在以下情况下不接受触摸事件:
- 不接受用户交互:userInteractionEnable = NO; (eg:UILabel、UIImageView等控件,userInterractionEnable默认就是NO,因此这些控件默认是不能接受触摸事件的)
- 隐藏:hidden = YES;
透明:alpha = 0.0~0.01 之间,等价于隐藏了。。
所以如果想要一个view接受事件就必须打开用户交互、不隐藏、透明度大于0.01.
提示:以上均为个人见解,如有错误之处,望指正。谢谢
- ios触摸事件二 :事件传递
- iOS--触摸事件的传递
- android触摸事件传递
- Android触摸事件传递
- 触摸事件传递
- 触摸事件的传递
- android触摸事件传递
- 屏幕触摸事件传递
- 触摸事件传递过程
- Android 触摸事件传递
- iOS事件传递机制(二)
- ios触摸事件四:触摸
- ios事件之触摸事件
- ios 进阶 -- 触摸事件
- IOS触摸事件
- iOS 触摸事件处理
- ios touches、触摸事件
- IOS-触摸事件
- java注解基础
- Android之的Shape图形使用
- ECSHOP模板制作中常见循环的操作方法
- php学习练手(一)
- PHP、MySql乱码解决方案
- ios触摸事件二 :事件传递
- SSH、myBatis下载地址
- 运维角度浅谈MySQL数据库优化
- dede:arclist 不能调用文章的副栏目或多个副栏目的解决方法
- JQuery移除事件
- 底层
- VS2013 C++ error C1083: 无法打开源文件: “SDKDDKVer.h”, "stdio.h", "tchar.h"
- android apk 防止反编译技术第一篇-加壳技术
- dedecms模版页使用sql