私は同じ問題を抱えていて、それを解決する2つの方法を見つけました。
1.この方法では、パンとスワイプの両方を同時に認識できます。これは、必要な場合があります。上下にスワイプしたときにページを変更したくないので、これは私が望んでいたものではありません。このメソッドでは、クラスをスワイプ ジェスチャ レコグナイザーのデリゲートにする必要があります。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
2.この方法では、スワイプが失敗したことを認識するまでパンが移動しないようにします。つまり、パンと同時にスワイプが発生することはありません。水平スワイプは常にパンを妨げるため、これはスワイプが垂直である場合にのみ機能します。
//Cheat to get the pan gesture from the pageviewcontroller. You should iterate and make sure you get the right one.
UIPanGestureRecognizer * panGR = self.pageViewController.gestureRecognizers[0];
// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
UISwipeGestureRecognizer * swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(openArchive:)];
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionDown;
[panGR requireGestureRecognizerToFail:swipeGestureRec];
[self.view addGestureRecognizer:swipeGestureRec];
swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(closeArchive:)];
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionUp;
[panGR requireGestureRecognizerToFail:swipeGestureRec];
[self.view addGestureRecognizer:swipeGestureRec];