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