ios - 如何从一个手势识别器转到另一个手势识别器

标签 ios ios5 uigesturerecognizer uipangesturerecognizer

我有一张用 OpenGLES 绘制的 map ,并且有一个平移手势识别器,其 maxNumberofTouches 设置为 1 以在 map 上平移,还有一个用于缩放的捏合手势识别器。我想在完成缩放后开始平移(一根手指离开屏幕),但是平移手势识别器不会启动,直到捏手势识别器完成(即检测到屏幕上没有手指时)。有什么想法吗?

最佳答案

可以通过委托(delegate)方法允许两个手势都处于事件状态:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
  shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    //  The two recognizers using the delegate (scale and rotate) should both be active.
    //
    return YES;
}

并保留一个 BOOL 来跟踪用户是否正在缩放,当该 BOOL 为 YES 时不允许执行平移手势中的代码。通过检查 TouchMoved:withEvent 方法(或者其他一些 UIGestureRegonizer 方法)中的触摸次数来更改 BOOL 值。

我认为这应该可行,我在允许缩放、旋转和拖动的应用程序中做了类似的事情,其中​​仅当用户不缩放/旋转时才允许拖动。

~祝你好运

关于ios - 如何从一个手势识别器转到另一个手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721494/

相关文章:

ios - 集成到 UIKit 应用程序时来自 Cocos2d 的 TextureCache 错误

ios - Expo 和 Branch 的通用链接 : Entitlements Error

ios - Swift3 如何像在 android 中一样在 iOS 中实现底部表单

iphone - 如何使用 UIGestureRecognizer 子类实现滑动

ios - 如何在 iOS 上重现带有 Spark 的 watchOS 关闭事件环动画?

ios - 阿拉伯语翻译在 iOS 9 上不工作,但在 iOS 10 上工作

iphone - UIActivityIndi​​catorView 没有动画

ios5 - 如何将现有的 iPhone/iPad 应用程序升级到 iOS6 和 iPhone 5 兼容

iphone - 插入时间范围 :ofTracks:atTime:error:

objective-c - 仅在 x 轴上捏合缩放 UIScrollView