繁体   English   中英

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

[英]Why tap gesture recognizer recognizes the taps from the view on its parent view?

我有一个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时,手势识别器会发射,我想不要发生这种情况。 我怎么能避免这个?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM