事件传递和响应者链条
来源:互联网 发布:手游淘宝代充便宜原因 编辑:程序博客网 时间:2024/05/17 04:02
一、事件传递:
<1当对象发生触摸事件以后,系统会将该事件加入到一个由UIApplication管理的事件队列中。
<2UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow)
<3主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,但是这仅仅是整个事件处理过程的第一步。
<4找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理
之前的文章我说过UIView在接收到触摸时间以后,系统会调用相应的方法来响应事件。但有时我们发现UIView不能接收到事件,如果是这种情况,可以从一下几点考虑:
1.不接收用户交互
userInteractionEnabled = NO
2.隐藏
hidden = YES
3.透明
alpha = 0.0 ~ 0.01
提示:UIImageView的userInteractionEnabled默认就是NO,因此UIImageView以及它的子控件默认是不能接收触摸事件的
附上一张图能很好地来说明事件是怎么传递的:
二、响应者链条:
1.响应者链条示意图:
2..响应者链的事件传递过程:
<1. 如果view的控制器存在,就传递给控制器;
<2. 如果控制器不存在,则将其传递给它的父视图
<3. 在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
<4. 如果window对象也不处理,则其将事件或消息传递给UIApplication对象
<5.如果UIApplication也不能处理该事件或消息,则将其丢弃。
3.如何寻找下一个响应者?
1> 如果当前这个view是控制器的view,那么控制器就是上一个响应者。
2> 如果当前这个view不是控制器的view,那么父控件就是上一个响应者。
4.如果最合适处理事件的控件不想处理控件,怎么将事件传递给下一个响应者处理?
1> 不重写任何 touches…方法。
2> 在重新的touches…方法中什么也不做,直接调用父类的touches…方法。
5.什么是响应者链和它的作用?
1> 响应者链是一系列的响应者对象连接起来构成的一条链条。它开始于第一响应者和结束应用程序对象。如果第一个响应者不能处理一个事件,它将事件转发给响应者链条的下一个响应者。
2> 可以让一个触摸事件发生的时候让多个响应者同时响应事件。
- 事件传递和响应者链条
- 事件传递和响应者链条
- 事件传递:响应者链条
- 事件的传递和响应(响应者链条)
- 事件传递和响应者链条原理分析
- iOS 事件传递机制和响应者链条
- iOS中的事件传递和响应者链条
- iOS中的事件传递和响应者链条
- iOS中的事件传递和响应者链条
- iOS中的事件传递和响应者链条
- iOS中事件的传递和响应者链条
- iOS中的事件传递和响应者链条
- 事件传递和响应者链条原理分析
- iOS 事件传递机制和响应者链条
- iOS事件传递,响应者链条
- 触摸事件的传递 && 响应者链条
- 触摸事件传递与响应者链条
- 事件处理和响应者链条详解
- 测试用例设计白皮书--测试用例基本概念
- 再谈TQ2440使用TFTP下载程序
- 华为机试训练:图片排序
- jQuery版ajax的实现
- poj2253flody变形(最小生成树)
- 事件传递和响应者链条
- 测试用例设计白皮书--等价类划分方法
- nginx 作为反向代理实现负载均衡的例子
- C++ 获取文件夹下的所有文件名
- Ubuntu10.04默认不支持root直接登录
- 测试用例设计白皮书--边界值分析方法
- 编译支持MFC的pcl::visualization静态库文件
- [Learning Linux For Fun ] unit 1 1.1
- sql语句逻辑执行顺序