首页 > 其他 > 详细

事件响应链

时间:2015-04-04 16:48:19      阅读:90      评论:0      收藏:0      [点我收藏+]

事件响应链的过程:第一响应者--->superview--->viewCtrl--->UIWIndow--->UIApplation--->Appdelegate,事件从下向上传递,如果一环不处理,则传递到下一环,如果都没有处理,最后回到UIApplication,再不处理就会抛弃.

我们计算第一响应者的过程是要通过以下步骤:即事件分发反的过程.iOS系统--->UIApplation-->UIWindow-->viewCtrl-->superView-->......subview

OS系统检测到一个触摸操作时会打包一个UIEvent对象,并放入Application的队列,Application从队列中取出事件后交给UIWindow来处理,UIWindow会使用hitTest:withEvent:方法来递归的寻找操作初始点所在的view,这个过程成为hit-test view。

        hitTest:withEvent:方法的处理流程如下:调用当前view的pointInside:withEvent:方法来判定触摸点是否在当前view内部,如果返回NO,则hitTest:withEvent:返回nil;如果返回YES,则向当前view内的subViews发送hitTest:withEvent:消息,所有subView的遍历顺序是从数组的末尾向前遍历,直到有subView返回非空对象或遍历完成。如果有subView返回非空对象,hitTest方法会返回这个对象,如果每个subView返回都是nil,则返回自己。

事件响应链

原文:http://blog.csdn.net/klabcxy36897/article/details/44873219

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!