我有一个有很多子视图的Masterview.it。我正在使用下面的代码来检测被触摸的视图,并将相应的view.the代码工作fine.But当我添加子视图到子视图时,它不工作,有任何帮助吗?
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
{
self.hitView = nil;
self.hitView = [super hitTest:point withEvent:event];
int x = self.hitView.frame.origin.x;
int y = self.hitView.frame.origin.y;
NSLog(@"x = %d",x);
NSLog(@"y = %d",y);
if ([self.viewDelegate respondsToSelector:
@selector(view:hitTest:withEvent:hitView:)])
{
return [self.viewDelegate view:self hitTest:point
withEvent:event hitView:hitView];
}
else
{
[self bringSubviewToFront:self.hitView];
return hitView;
}}
发布于 2010-09-21 16:33:56
如果我没弄错的话,这很简单:hitTest总是返回视图中最远的子视图。如果没有子视图,这始终是相同的视图。如果有,可能会返回该子视图。下面是你可以解决的方法:
self.hitView = [super hitTest:point withEvent:event];
if ([self.hitView isDescendantOfView: self])
self.hitView = self;编辑现在我更好地理解了这个问题,你也许应该这样做。这段代码返回的superview是外部视图的直接后代:
UIView *hitView = [super hitTest:point withEvent:event];
while (hitView && hitView.superview != self)
hitView = hitView.superview;(还请注意,您应该使用局部变量,并在以后更改属性)。
发布于 2010-09-21 17:46:53
就像你说的,你要移动UIViews。你应该看看WWDC 2010的视频,在那里他们用新的GestureRecognizer Class实现了这种效果。
你应该寻找的视频被命名为“手势识别”。如果你找不到,我可以在下班回家的时候链接。
祝你好运!
https://stackoverflow.com/questions/3758388
复制相似问题