我有一张用 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/