Как перейти от одного распознавателя жестов к другому

У меня есть карта, нарисованная с помощью OpenGLES, и у меня есть распознаватель жестов панорамирования, для которого maxNumberofTouches установлен на 1 для панорамирования карты, и распознаватель жестов щипка для масштабирования. Я хочу начать панорамирование, как только закончу масштабирование (один палец отрывается от экрана), но распознаватель жестов панорамирования не срабатывает до тех пор, пока не будет выполнен pinchgesturerecognizer, то есть когда он обнаружит, что на экране нет пальцев. Любые идеи?


person jfisk    schedule 04.01.2012    source источник


Ответы (1)


Можно разрешить активировать оба жеста с помощью метода делегата:

- (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. Изменение значения BOOL путем проверки количества касаний в методе touchesMoved:withEvent (или, возможно, в каком-либо другом методе UIGestureRegonizer).

Я думаю, это должно работать, я делаю что-то подобное в приложении, которое позволяет масштабировать, вращать и перетаскивать, где перетаскивание разрешено только тогда, когда пользователь не масштабирует/не вращает.

~ Удачи

person Ryan Crews    schedule 04.01.2012
comment
нашел нечто подобное здесь: mindtreatstudios.com/our-projects/ - person jfisk; 04.01.2012