15

我有一个UIView parentView实现 aUITapGuestureRecognizer并在点击时执行某些操作。parentView有一个名为的子视图childView,它也实现了一个UITapGuestureRecognizer并在点击时执行某些操作。

有一个实例,我必须在动画期间关闭childViews UITapGestureRecognizer片刻,我注意到当它关闭并点击childView时,点击被拦截parentView。此外,我在该视图的顶部附加了一个工具栏,该工具栏没有附加任何手势识别器,并且它的触摸通过了 parentView (按钮几乎不起作用)。我想知道是否可以在不参考父母 UITapGestureRecognizer 的情况下禁用此功能?

我已经尝试使用 set 的exclusiveTouches属性UIView为 yes 并且它不起作用。任何建议,将不胜感激。

4

3 回答 3

25

在父手势识别器中,实现UIGestureRecognizerDelegate, 并实现以下方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
    if ([touch.view isKindOfClass:[ClassThatYouWantTouchesBlocked class]]) 
    {
        return NO;
    }
    else 
    {
        return YES; 
    }
}

替换ClassThatYouWantTouchesBlocked为您希望其触摸被忽略的类。

于 2012-06-24T09:56:49.643 回答
1

如果从不关闭ChildView 的点击手势识别器怎么办?如果它是从孩子的点击手势方法返回动画而不做任何事情。

如果它是一个imageView ,则可能会使用isAnimating属性。

于 2012-05-25T07:14:03.227 回答
0

将手势识别器添加到阻止子。

self.blockerView.addGestureRecognizer(UITapGestureRecognizer())
于 2020-05-02T15:48:52.263 回答