Конфликты между UIGestureRecognizer и в iPhone - PullRequest
0 голосов
/ 29 октября 2010

Я работаю в небольшом приложении для iPhone, которое использует openGL.

Приложение должно:

Перемещаться по экрану движущимся прикосновением.Увеличение / уменьшение масштаба, нажав

Я перезаписываю эту функцию, чтобы обрабатывать координаты касаний и перемещаться по экрану пальцем, с успехом, работая отлично:

  • (void) touchesBegan: (NSSet *) затрагивает событиеEvent: (UIEvent *)
  • (void) touchesMoved: (NSSet *) затрагивает событие withEvent: (UIEvent *)
  • (void) touchesEnded:(NSSet *) касается события: (UIEvent *)

Я использую распознаватели UIGesture для двойного касания, сжимания жестов, пролистывания, счетчика с успехом, все жесты обнаруживаются идеально.

Но у меня конфликты.Например, иногда я делаю двойное касание, и оно распознается правильно, но оно также передается моей функции touchedMoved, что приводит к ошибочным движениям.То же самое происходит с жестами сжатия и встречного сжатия, в большинстве случаев они хорошо работают при увеличении и уменьшении, но иногда моя функция touchSMoved также обнаруживает касания и перемещает экран.

Это плохая практикаперезаписать эту функцию и одновременно использовать UIGesturerecognizer?Если нет, то есть ли способ работать с обоими без конфликтов?

Я попытался установить setDelaysTouchesBegan и setDelaysTouchesEnded в Yes в своих распознавателях, но в результате мои прикосновения не были переданы ни одной из моих перезаписанных функций!

Я думал об использовании UIGestureRecognizer для обработки пролистываний и удаления перезаписанных функций для получения касаний, а также с помощью значения пролистывания, чтобы вычислить, насколько сильно смещается мой экран?

1 Ответ

1 голос
/ 29 октября 2010

Я не могу ответить, почему вы иногда получаете ложные прикосновения к событиям Moved: но звучит так, будто вы можете просто отказаться от перезаписанных функций и использовать UIPanGestureRecognizer для перемещения по экрану.

...