事件响应者链的理解

来源:互联网 发布:易特进销存软件破解版 编辑:程序博客网 时间:2024/06/05 10:05

1.一个点击事件发生时系统会先判断事件发生在哪些视图上,这个过程是从父视图向子视图方向的递归检查,以下图为例解释一下:



如果点击放生在E:

(1)点击区域发生在A视图,所以检查他的子视图B和C

(2)点击区域发生在C视图,所以终止B视图分支的检查,继续检查C视图的分支

(3)点击区域发生在E视图,所以终止D视图分支的检查,继续检查E视图的分支

(4)由于E视图没有子视图,所以E分支检查终止,继而整个检查过程结束

注:个人理解在检查这些视图及子视图的过程中,系统回创建一个栈,检查时当点击点在该视图则将视图添加到栈中,直到检查结束


2.上面完成后在理解事件相应者链就好理解了

如果A视图是视图控制器的view,那么就可以在执行上面的操作前将application和window,加入到栈中,执行完上面的操作后栈里的对象由栈底到栈顶得顺序是

application  -->  window  -->  view controller  -->  A --> C -->  E,这就形成的响应者链,系统会以从E到application的顺序检查有没有可以接受并处理事件的对象,如果有则终止事件的传递并处理事件操作,如果没有一直传递下去,如果到application时还没有能够响应事件,则抛弃事件不做处理,这就是响应者链之间的传递过程,语言表达能力不是很好,但仔细理解一下就想通了





0 0
原创粉丝点击