有一个名为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;

10-08 06:24