Ser*_*nce 5 iphone cocoa-touch uiview hittest ios
我有一个我称之为的视图,parentView它有一个名为 的子视图childView。的一部分childView在 的范围之外parentView,childView并附有panGestureRecognizer。我已经实现了以下内容,以便即使超出其超级视图范围,parentView它也能识别触摸:childView
- (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];
}
Run Code Online (Sandbox Code Playgroud)
然而当我触摸或拖动时childView,hitTest却根本不被调用了parentView。为什么是这样?
因为该事件沿着响应者链向下传递,并在调用 hittest 之前使用
\n\n因此,在这种情况下,事件从上到下进行...查看有关响应者链的文档:
\n\n\n\n但重要的是:
\n\n命中测试视图首先有机会处理触摸事件。如果命中测试视图无法处理事件,则事件将沿该视图\xe2\x80\x99s 响应者链向上移动,如\xe2\x80\x9c中所述响应者链由响应者对象\xe2\x80\x9d 组成,直到系统找到一个可以处理它的对象。
触摸事件。如果命中测试视图无法处理触摸事件,则该事件会沿着从命中测试视图开始的响应器链向上传递。
| 归档时间: |
|
| 查看次数: |
4527 次 |
| 最近记录: |