我有一个名为 parentView
的 View ,它有一个名为 childView
的 subview 。 childView
的一部分在 parentView
的范围之外,并且 childView
附加了一个 panGestureRecognizer
。我在 parentView
中实现了以下内容,以便它可以识别对 childView
的触摸,即使它在其 super View 范围之外:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0)
{
for (UIView *subview in self.subviews)
{
CGPoint subPoint = [subview convertPoint:point fromView:self];
UIView *result = [subview hitTest:subPoint withEvent:event];
if (result != nil)
{
return result;
break;
}
}
}
return [super hitTest:point withEvent:event];
}
然而,当我触摸或拖动
childView
时,甚至没有在 hitTest
上调用 parentView
。为什么是这样? 最佳答案
因为事件沿着响应者链向下并在调用 hittest 之前使用
所以在这种情况下事件从上到下......查看有关响应者链的文档:
虽然不是很清楚:D
http://developer.apple.com/library/ios/#DOCUMENTATION/EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html
但重要的一点:
关于iphone - 为什么在触摸 View subview 时没有调用 hitTest?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15466507/