iOS事件响应链

来源:互联网 发布:黑马程序员怎样 编辑:程序博客网 时间:2024/05/02 00:34
一句话解释,把view层级关系看成是树的话,那么树中的叶节点比父节点永远更优先被分发事件。对于触摸事件,window对象会尝试着首先将事件传递给触摸事件发生点得View。这个View被视为“命中测试view” (hit-test view)。

这里写图片描述

如上图,你如果点击cView,iOS会通过检测所有的子视图,去寻找命中测试view:

1、触摸点是否在aView边界内,如果是,则检查bView和dView;

2、触摸点不在dView的边界内,而在bView的边界内,接着会检查cVeiw,而cView是整个包含触摸事件的view层级中最底端的view,所以cView就是命中测试view。

打印出来cView的所有的nextResponder可以得到响应链顺序:
cView->bView->aView->UIView->viewController->UIWindow->UIApplication->AppDelegate。

0 0
原创粉丝点击