码迷,mamicode.com
首页 > 移动开发 > 详细

iOS响应者链

时间:2015-06-11 14:43:42      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:ios开发   响应者链   

1:iOS系统检测到手指触摸(Touch)操作 -> 打包成一个UIEvent对象 -> 放入当前活动Application的事件队列 -> 传递给单例的UIWindow来处理 -> UIWindow通过响应者链的事件分发机制找到第一响应者(如下图步骤所示)

技术分享

                        图二

加入用户点击了View E,下面结合图二介绍hit-test view的流程:

1、A是UIWindow的根视图,因此,UIWindwo对象会首相对A进行hit-test;

2、显然用户点击的范围是在A的范围内,因此,pointInside:withEvent:返回了YES,这时会继续检查A的子视图;

3、这时候会有两个分支,B和C:

点击的范围不再B内,因此B分支的pointInside:withEvent:返回NO,对应的hitTest:withEvent:返回nil;

点击的范围在C内,即C的pointInside:withEvent:返回YES;

4、这时候有D和E两个分支:

点击的范围不再D内,因此DpointInside:withEvent:返回NO,对应的hitTest:withEvent:返回nil;

点击的范围在E内,即E的pointInside:withEvent:返回YES,由于E没有子视图(也可以理解成对E的子视图进行hit-test时返回了nil),因此,E的hitTest:withEvent:会将E返回,再往回回溯,就是C的hitTest:withEvent:返回E--->>A的hitTest:withEvent:返回E。


2:如果没有找到第一响应者,则当前视图通过响应者链向上回溯至UIWindow和UIApplication,如果二者都不能处理该事件,则该事件将会被丢弃



iOS响应者链

标签:ios开发   响应者链   

原文地址:http://blog.csdn.net/niejiafa_131/article/details/46455779

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