sen*_*thu 0 iphone uiviewcontroller uiview ipad
我有一个Masterview.it有很多childviews.我使用下面的代码来检测触摸的视图,并带来前面相应的视图.代码工作正常.但是当我将子视图添加到子视图时,它没有工作,任何帮助请?
- (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;
}
Run Code Online (Sandbox Code Playgroud)
}
如果我做对了,那很容易:hitTest
总是返回视图中最远的后代子视图.如果没有子视图,则始终是相同的视图.如果有,则可能会返回该子视图.以下是您可以解决的问题:
self.hitView = [super hitTest:point withEvent:event];
if ([self.hitView isDescendantOfView: self])
self.hitView = self;
Run Code Online (Sandbox Code Playgroud)
编辑现在我更好地理解了这个问题,你应该做以下事情.此代码返回superview,它是外部视图的直接后代:
UIView *hitView = [super hitTest:point withEvent:event];
while (hitView && hitView.superview != self)
hitView = hitView.superview;
Run Code Online (Sandbox Code Playgroud)
(请注意,您应该使用局部变量并在稍后更改您的属性).
归档时间: |
|
查看次数: |
7654 次 |
最近记录: |