禁止在子视图上从父视图接收触摸

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

有一个实例,在动画片段时间内,我必须关闭 childViews UITapGestureRecognizer ,并且我注意到它关闭时我点击 childView ,tap会被 parentView 拦截。此外,我有一个工具栏连接到这个视图的顶部,没有任何手势识别器附加到它,它触摸得到传递parentView(按钮将勉强工作)。我想知道是否有可能禁用这个没有参考父母UITapGestureRecognizer?

我试过使用 UIViewexclusiveTouches 属性设置为yes,它不起作用。任何建议,将不胜感激。

14
额外 编辑
意见: 1

2 答案

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

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

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

24
额外

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

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

1
额外
感谢Warif的努力,但因为没有回答这个问题而付出了努力,它试图改变问题陈述。而且@Cthutu,我会说你对stackoverflow.com更糟,因为我没有解释。
额外 作者 Ser Pounce,
WarifAkhandRishi - 通常如果你想收集信息,最好在评论部分说。至于关闭childViews tapGestureRecognizer,不好意思,如果它不明显,但这是不是一个选项,我需要这样。但我仍然认为这是对问题陈述的改变,而不是一个答案。无论如何,同意不同意,并且感谢你不会感到情绪过度和诉诸名字,不像其他人@Cthutu
额外 作者 Ser Pounce,
有效的答案 - 我会upvote。 downvote没有解释的人是stackoverflow.com的枯竭。
额外 作者 Cthutu,
不,我高举,因为我认为这是一个有效的答案,不是出于恶意。我认为这在我评论中的“有效答案”中很明显。 Warif开箱即用,这是值得赞扬的。你不配让你的问题得到解答。
额外 作者 Cthutu,
我描述了一群没有解释就倒下的人。这是无益的,士气低落,并减少SO的有用性。然而,这是你第一次得到个人。你应该已经解释过关闭childViews tapGestureRecognizer不是注释中的一个选项,而不是匿名的downvoting。
额外 作者 Cthutu,
我可以知道为什么投票吗?
额外 作者 Warif Akhand Rishi,
@CoDEFRo 我认为人们不会回答“投票”。他们想收集信息并且有帮助他人的感觉。你从来没有说过你为什么在你的问题中做这件事 “我必须关闭childViews UITapGestureRecognizer。” 我建议如果让孩子tapGesture ON 。所以手势不会穿过childView。
额外 作者 Warif Akhand Rishi,
@Cthutu 非常感谢。不同的人有不同的想法但我非常同意你的看法,人们应该有一个解释。
额外 作者 Warif Akhand Rishi,