Возможно ли совместить UIPanGesture и UISwipeGesture? - PullRequest
2 голосов
/ 28 марта 2012

У меня есть подкласс UIIMageView, и я добавляю и UIPanGestureRecognizer, и UISwipeGestureRecognizer следующим образом:

self.userInteractionEnabled = YES;

UIPanGestureRecognizer * panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
[self addGestureRecognizer:panGesture];

UISwipeGestureRecognizer * swipeUp = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeUp:)];
swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
[self addGestureRecognizer:swipeUp];

UISwipeGestureRecognizer * swipeDown = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeDown:)];
swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
[self addGestureRecognizer:swipeDown];

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

Любые разъяснения будут полезны.

Спасибо

1 Ответ

3 голосов
/ 28 марта 2012

Проблема в том, что жест смахивания будет также распознаваться как panGesture.

Что вам нужно сделать, это установить делегат для класса, реализующего метод:

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

Это позволит вам распознать два жеста одновременно, но вам должно быть ясно, что всегда, когда вызывается ваш удар, будет вызываться и ваша панорама.

Из яблочной документации :

Этот метод вызывается, когда распознавание жеста либо gestRecognizer, либо другим GestureRecognizer блокирует распознавание другого жеста распознавателем жестов. Обратите внимание, что возвращение YES гарантирует одновременное распознавание; возвращение NO, с другой стороны, не гарантирует предотвращения одновременного распознавания, потому что делегат другого распознавателя жестов может вернуть YES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...