为什么点击手势识别器会识别其父视图中视图的水龙头?

时间:2013-03-06 10:27:38

标签: ios uigesturerecognizer

我有一个UIView和一个轻敲手势识别器:

UIImageView *tabView = [[UIImageView alloc] initWithFrame:CGRectMake(41, 145, 702, 100)];
tabView.image = [UIImage imageNamed:@"inactive_tab"];
tabView.userInteractionEnabled = YES;
UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(handleSingleTap:)];
[tabView addGestureRecognizer:singleFingerTap];
[self.scrollView addSubview:tabView];

我在scrollview上添加了另一个视图:

[self.scrollView addSubview:self.activeTab];

activeTab超过inactiveTap。当我点击activeTap时,手势识别器会发射,我想不要发生这种情况。我怎么能避免这个?

1 个答案:

答案 0 :(得分:9)

使用UIGestureRecognizerDelegate及其方法gestureRecognizer:shouldReceiveTouch:。 您可以检查触摸点是否在视图框内,如果您不希望在该视图上发生触摸,则返回NO

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    CGPoint touchLocation = [touch locationInView:self.view];
    return !CGRectContainsPoint(self.activeTab.frame, touchLocation);
}