Мультитач-событие в UIView - PullRequest
0 голосов
/ 24 июня 2011

Я использую приведенные ниже коды в одном из моих приложений UIView.

Я хочу обработать одно касание в touchesBegan и многократное касание в touchesMoved.

Коды работают в симуляторе. Но когда я передаю его на устройство iPhone, я обнаруживаю, что когда я касаюсь двумя пальцами, приведенные ниже коды по-прежнему запускаются время от времени, что не должно быть правдой, поскольку у меня есть выражение "if ([touches count] == ​​1)". «СЛУЧАЙНО» означает, что выражение «если» работает иногда, но не всегда.

Это происходит из-за того, что 2 пальца не касаются экрана одновременно и говорят 0,1 секунды позади другого, поэтому событие вызывается как 1 + 1 палец, чем 2 пальца одновременно ??

Кто-нибудь может помочь?

    - (void) touchesBegan: (NSSet * ) touches withEvent: (UIEvent * ) event
    {
      // handle only 1 finger
      if ([touches count] == 1)
      {
        NSLog(@"touchesBegan touches = 1");
        pt = [[touches anyObject] locationInView:self];
        [self setNeedsDisplay];
      }
    }

1 Ответ

0 голосов
/ 24 июня 2011

Для этого может быть проще создать распознаватели жестов. Тот, который обнаруживает 1 касание пальца, и тот, который обнаруживает движение 2 пальца. Они должны быть легко созданы с использованием UIGestureRecognizer в качестве базового класса. Затем можно сделать так, чтобы касание одним пальцем зависело от неудачного движения двумя пальцами, что означает, что для запуска события касания одним пальцем распознаватель жестов с движением двух пальцев должен потерпеть неудачу .

Вы можете сделать это, применив следующий метод:

- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer

Распознаватели жестов - невероятно мощные вещи, я рекомендую вам их использовать!

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html

...