ios – 从UITapGestureRecognizer中排除子视图

前端之家收集整理的这篇文章主要介绍了ios – 从UITapGestureRecognizer中排除子视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个子视图和一个超级视图. superview附加了一个UITapGestureRecognizer.
UIView *superview = [[UIView alloc] initWithFrame:CGRectMake:(0,320,480);
UIView *subview = [[UIView alloc] initWithFrame:CGRectMake:(100,100,100);
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap);
superview.userInteractionEnabled = YES;
subview.userInteractionEnabled = NO;
[superview addGestureRecognizer:recognizer];
[self addSubview:superview];
[superview addSubview:subview];

识别器也会在子视图中触发,有没有办法从子视图中排除识别器?

我知道之前已经问过这个问题,但我没有找到一个好的答案.

解决方法

您可以使用手势识别器委托来限制可以识别触摸的区域,类似于此示例:
recognizer.delegate = self;
...

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    CGPoint touchPoint = [touch locationInView:superview];
    return !CGRectContainsPoint(subview.frame,touchPoint);
}

请注意,您需要保持对父视图和子视图的引用(使它们成为实例变量?)才能在委托方法中使用它们

原文链接:https://www.f2er.com/iOS/335021.html

猜你在找的iOS相关文章