Я наконец нашел самый простой ответ, пожалуйста, пометьте его как ответ, если вы согласны.
Если у вас есть только одно направление свайп + панорамирование, вы просто говорите: [myPanRecogznier requireGestureRecognizerToFail: mySwipeRecognizer];
Но если у вас есть два или более свипов, вы не можете передать массив вэтот метод.Для этого есть UIGestureRecognizerDelegate, который вам нужно реализовать.
Например, если вы хотите распознать 2 пролистывания (левый и правый), а также хотите разрешить пользователю перемещаться вверх, вы определяете распознаватели жестов как свойства или переменные экземпляра, а затем устанавливаете свой VCв качестве делегата в распознавателе жестов панорамирования:
_swipeLeft = [[UISwipeGestureRecognizer alloc] ...]; // use proper init here
_swipeRight = [[UISwipeGestureRecognizer alloc] ...]; // user proper init here
_swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
_swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
_pan = [[UIPanGestureRecognizer alloc] ...]; // use proper init here
_pan.delegate = self;
// then add recognizers to your view
Затем вы реализуете - (BOOL) gestRecognizer: (UIGestureRecognizer *)*
Это говорит о том, что распознаватель жестов панорамирования работает только в том случае, если не удается распознать как левые, так и правые пролистывания - идеально!
Надеемся, что в будущем Apple просто разрешит нам передать массив в requireGestureRecognizerToFail: метод.