繁体   English   中英

禁用从子视图上的父视图接收触摸

[英]Disable receiving touches from parent view on subview

我有一个UIView parentView ,它实现了一个UITapGuestureRecognizer并在点击时做一些事情。 parentView有一个名为childView的子视图,它也实现了一个UITapGuestureRecognizer并在点击时做一些事情。

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

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

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

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

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

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

如果它比isAnimating属性可能会派上使用ImageView的

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

self.blockerView.addGestureRecognizer(UITapGestureRecognizer())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM