【问题标题】:Multiple Gestures for UIGestureRecognizers (iPhone, Cocos2d)UIGestureRecognizers (iPhone, Cocos2d) 的多种手势
【发布时间】:2011-07-16 12:14:46
【问题描述】:

我正在使用 Cocos2d 来渲染精灵,并使用 UIGestureRecognizers 来允许用户平移、旋转和缩放精灵。

我让每个人都使用如下代码单独工作:

UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePinchFrom:)] autorelease];
[viewController.view addGestureRecognizer:pinchRecognizer];

UIRotationGestureRecognizer *rotationRecognizer = [[[UIRotationGestureRecognizer alloc] initWithTarget:layer action:@selector(handleRotationFrom:)] autorelease];
[viewController.view addGestureRecognizer:rotationRecognizer];

但是,如果用户在旋转时将手指捏在一起,我想同时缩放和旋转精灵(例如,照片应用程序会这样做)。不幸的是,识别器似乎陷入了“旋转”或“捏合”模式,并且不会同时调用两个处理程序:(

所以,基本上,我想知道 - 这是否意味着我不能使用 UIGestureRecognizers?我可以组合两个识别器并在一个处理程序中执行所有操作吗?我是否必须将 UIGestureRecognizer 子类化为类似于“PinchAndRotateRecognizer”的东西。

帮助表示赞赏:)

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone


    【解决方案1】:

    只需在您的委托中实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

    我有一个UIPinchGestureRecognizer、一个UIPanGestureRecognizer 和一个UIRotationGestureRecognizer 设置,我希望它们都同时工作。我也有一个UITapGestureRecognizer,我确实希望同时被识别。我所做的只是:

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
        if (![gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && ![otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
            return YES;
        }
    
        return NO;
    }
    

    【讨论】:

      【解决方案2】:

      只有一个手势识别器可以同时“激活”。最先触发的获胜。这意味着你不能结合 UIPinchGestureRecognizer 和 UIRotationGestureRecognizer 来达到想要的效果。

      您可以尝试按照您所说的将 UIGestureRecognizer 子类化。阅读文档中的子类化说明!

      【讨论】:

      • 这不是真的。只需在您的委托中实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:,请参阅下面的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多