有一个名为viewA的UIView,viewA有一个UITapGestureRecognizer,我无法修改识别器的目标代码。
而且viewA有很多子视图。对于某些特定的子视图,我希望它们在我触摸它们时不将轻击事件传递给viewA(对于其他子视图,它们应该将轻击事件传递给viewA)。我该怎么办?
最佳答案
将viewA设置为识别器的委托。然后使用委托方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
检查触摸是否在不需要的子视图中:
for(UIView *v in unwantedSubviewsArray){
CGPoint touchLocation = [touch locationInView:v];
if (CGRectContainsPoint(v.frame, touchLocation)){
return NO;
}
}
return YES;