阻止将手势传递给SuperView

时间:2013-03-16 09:51:32

标签: ios cocoa-touch uiview uipangesturerecognizer

ScrollView有一些SubViews ....
ScrollView包含其预定义的手势(平移)和我的自定义手势(平移)以及同时识别它...
SubViews还包含自定义Pan Gesture ......
除了SubViews上的平移手势外,一切正常。
当我在SubView上做平移时,它的SuperView也会触及并处理我不想要的东西......
当在子视图上进行平移时,superView不应该识别它们。
我如何阻止将我的SubView手势传递给SuperView?

2 个答案:

答案 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;
}