事件响应链

来源:互联网 发布:应用获取tomcat端口 编辑:程序博客网 时间:2024/05/29 07:45

事件响应链的过程:第一响应者--->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,则返回自己。

1 0
原创粉丝点击