事件响应链:当你点击了屏幕上的某个view,这个动作由硬件层传导到操作系统,然后又从底层封装成一个事件(Event)顺着view的层级往上传导,一直要找到含有这个点击点且层级最高(文档说是最低,我理解是逻辑上最靠近手指)的view来响应事件,这个view就是hit-test view。
用途:我们可以在运行时,扩大Button的相应热区,重置View的hitTestingBounds,来扩大相应区域。
常用极端情况:
1、子view超出了父view的bounds响应事件:
项目中常常遇到button已经超出了父view的范围但仍需可点击的情况,比如自定义Tabbar中间的大按钮,如下图闲鱼的app,点击超出Tabbar bounds的区域也需要响应,此时重载父view的-(UIView *)hitTest: withEvent:方法,去掉点击必须在父view内的判断,然后子view就能成为hit-test view用于响应事件了。
当子View超出父View时,可以先去父View上查找子View,如果子View超出父View,则直接用父视图去相应。