一句话解释,把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。