我有一个UIView
parentView
来实现UITapGuestureRecognizer
并在点击时执行某些操作。 parentView
有一个名为childView
的子视图,它也会实现UITapGuestureRecognizer
并在点击时执行某些操作。
有一个例子,我必须在动画片中暂时关闭childViews
UITapGestureRecognizer
,我注意到它关闭后我点按childView
,点击被parentView
拦截。此外,我有一个工具栏附加到此视图的顶部,没有附加任何手势识别器,它的触摸通过parentView(按钮几乎不起作用)。我想知道是否有可能在没有引用父母UITapGestureRecognizer的情况下禁用它?
我尝试使用exclusiveTouches
的{{1}}属性设置为yes,但它不起作用。任何建议将不胜感激。
答案 0 :(得分:24)
在父手势识别器中,实现UIGestureRecognizerDelegate
,并实现以下方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[ClassThatYouWantTouchesBlocked class]])
{
return NO;
}
else
{
return YES;
}
}
将ClassThatYouWantTouchesBlocked
替换为您希望其触摸的类被忽略。
答案 1 :(得分:1)
如果永远不会关闭 ChildView的点击手势识别器怎么办?如果它是动画从孩子的轻击手势方法返回而不做任何事情。
如果 imageView ,则 isAnimating 属性可能会被使用。
答案 2 :(得分:0)
向阻止儿童添加手势识别器。
self.blockerView.addGestureRecognizer(UITapGestureRecognizer())