博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios 事件链 和 响应链 初步理解
阅读量:7043 次
发布时间:2019-06-28

本文共 702 字,大约阅读时间需要 2 分钟。

当我们在手机屏幕上进行了一次点击,或者滑动,轻扫手机屏幕,接下来,我们的手机该如何回应我们的指令,软件又经历了哪些过程呢?这篇文章是我自己的简单理解,如有不当,请指出。

1、事件链
当我们用手指轻触屏幕,首先是app的UIApplication对象接收到了这次点击事件,紧接着,UIApplication对象把这次点击传递给了UIWindow对象,UIWindow对象继续向他的子View对象传递,直到传递到最上层。举个例子:

img_25918d1f9e2e5d09d88c64851e6d9635.png
image.png

我理解的就是,app会把点击事件传给他上面的每一个子View,至于谁来响应,那就是响应链了。就像上图那样,点击了红色的View,传递过程是这样的:

UIApplication对象——>UIWindow对象——>rootVC.view对象——>redview对象,blueView对象。

2、响应链

当每一个view都收到点击事件之后,谁来做出响应呢?首先,能够响应这个点击的是谁呢?能够响应事件的View,userInteractionEnabled属性一定要是yes。

响应过程是和时间传递过程相反的。

img_0622a00a2485cf38171ba04646f8e905.png
image.png

最上面的红色view发现点击事件是在自己的范围内,且自己可以响应这个事件,那么他就不再向下传递了,这就可以理解两个按钮,如果都可以响应点击事件,那么正常情况下应该是上面的按钮响应点击事件。如果红色的View发现自己不具备响应这个事件的能力,那么他会把事件继续向下传递,传递到他的上一层也就是rootVC.view,就这样依次向下传递,直到UIwindow层,发现依然没有可以响应的View,那么这个点击事件就没有响应者,点击无效。

转载地址:http://gqhal.baihongyu.com/

你可能感兴趣的文章
python中用try来处理程序异常的集中常用方法
查看>>
[CTO札记]惊讶于警察尚未用LBS(手机定位服务)来追踪疑犯
查看>>
HP MSL2024带库无法弹出Media Slot,无法更换磁盘尝试
查看>>
打开磁盘管理器,提示:RPC服务器不可用
查看>>
MIX 2008与ASP.NET MVC框架的Road-Map
查看>>
git忽略文件【转】
查看>>
sklearn的train_test_split,果然很好用啊!
查看>>
什么是域(domain)
查看>>
在VisualStudio中应该使用什么字体
查看>>
一个C#的加锁解锁示例
查看>>
Android应用在不同版本间兼容性处理
查看>>
Win8:WinJS.UI.AppBar 工具栏
查看>>
Java中的强引用、软引用、弱引用和虚引用
查看>>
ios: NSConditionLock
查看>>
FreeMarker整合Spring 3
查看>>
云计算与网格计算的深入比较
查看>>
Mybatis oracle多表联合查询分页数据重复的问题
查看>>
oc83--自定义类实现copy方法
查看>>
What's New in iOS7,iOS7新特性介绍
查看>>
电源管理里的休眠选项卡没了
查看>>