hitTest方法的执行(系统是通过 hitTest 方法来进行递归搜索的)
1> - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event; 这个方法是 UIView 中的一个方法
2> 参数 point 表示是相对于当前 UIView 的点位置。用来判断这个触摸点是否在当前视图的"有效范围"内。
3> 这个方法的作用, 当控制器 view 接收到"触摸事件"后, 调用自己的 hitTest 方法, 递归搜索子控件, 看看是否有更合适的子控件来处理这个事件(如果这个触摸点在具体的某个子控件的有效范围内, 那么这个子控件就是"更合适的控件"), 找到某个子控件以后, 这个子控件再调用自己的 hitTest 方法依次类推继续查找"更合适的子控件", 直到没有子控件了或者没有包含这个点的子控件了
4> 如果当前控件的 userInteractionEnabled = NO, 那么就不再搜索它的子控件了。
5> 如果在 hitTest 方法中, 没有调用 super 的 hitTest 方法, 只是直接返回 self, 那么这样就终止了这个搜索过程, 系统会认为当前处理这个触摸的控件就是这个控件。
浙公网安备 33010602011771号