码迷,mamicode.com
首页 > 其他好文 > 详细

事件的产生与传递 及 响应者链条

时间:2015-05-16 09:07:17      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:对象   application   事件的产生与传递 及 响应者链条   

事件的产生与传递

技术分享

正如我上图所总结的:

1.左边部分:我总结了事件传递的流程

2.中间部分:举例说明了实际情况

3.右边部分:一个View不能接受事件的情况


响应者链条


技术分享


左边的情况,接收事件的initial view如果不能处理该事件并且她不是顶层的View,则事件会往它的父View进行传递。initial view的父View获取事件后如果仍不能处理,则继续往上传递,循环这个过程。如果顶层的View还是不能处理这个事件的话,则会将事件传递给它们的ViewController,如果ViewController也不能处理,则传递给Window(UIWindow),此时Window不能处理的话就将事件传递给Application(UIApplication),最后如果连Application也不能处理,则废弃该事件。

右边图的流程唯一不同就在于,如果当前的ViewController是由层级关系的,那么当子ViewController不能处理事件时,它会将事件继续往上传递,直到传递到其Root ViewController,后面的流程就跟之前分析的一样了。

事件的完整处理过程总结:
1.先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件。
2.调用最合适控件的touches... 等方法。
3.如果调用了[super touches...]; 就会将事件顺着响应者链条往上传递;传递给上一个响应者。
4.接着就会调用上一个响应者的touches... 方法。

什么是响应者链条?
1.响应者链条是由多个响应者对象连接起来的链条(什么是响应者对象:能处理事件的对象)。
2.利用响应者链条,能让多个控件处理同一个触摸事件。
3.怎么利用链条往上传递?谁是上一个响应者?
1> 如果当前这个View是控制器的View,那么控制器就是上一个响应者。
2> 如果当前这个View不是控制器的View,那么父控件就是上一个响应者。

事件的产生与传递 及 响应者链条

标签:对象   application   事件的产生与传递 及 响应者链条   

原文地址:http://blog.csdn.net/sinat_27706697/article/details/45765645

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!