ScrollView有一些SubViews ....
ScrollView包含其预定义的手势(平移)和我的自定义手势(平移)以及同时识别它...
SubViews还包含自定义Pan Gesture ......
除了SubViews上的平移手势外,一切正常。
当我在SubView上做平移时,它的SuperView也会触及并处理我不想要的东西......
当在子视图上进行平移时,superView不应该识别它们。
我如何阻止将我的SubView手势传递给SuperView?
答案 0 :(得分:9)
要阻止超级视图响应手势,当触摸点下方有子视图时,可以按如下方式进行:
实现以下UIGestureDelegate方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
作为
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return (touch.view == superView);
}
并将此委托设置为分配给superView的gestureRecognizer。
我希望这应该做到了。
答案 1 :(得分:0)
基本上当您点击子视图时,由于您的超级视图与子视图重叠,因此无法识别超级视图手势。
在.h中添加委托并将其交给tapGestures并给出类似这样的条件
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([gestureRecognizer.view isKindOfClass:[superView class]])
return NO;
else
return YES;
}