2

UIPageViewController プロジェクトの最初のページでは機能するが、次のすべてのページでは機能しない UISwipeGestureRecognizer に問題があります。

構成は、Apple の PageViewController サンプル コードに基づいています。問題の UISwipeGestureRecognizer がストーリーボードに追加され、すべてのページで正常に動作する UITapGestureRecognizer も追加されます。

ビューコントローラーでターゲット、セレクター、ビューが正しいかどうかを確認しましたが、異常は見つかりませんでした。

誰かが同様の動作に気づき、解決策を見つけましたか?

スワイプ ジェスチャ認識エンジンをプログラムで追加しようとしても、同じ結果が得られたと言わざるを得ません。

4

1 に答える 1

3

私は同じ問題を抱えていて、それを解決する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];
于 2013-02-10T07:32:52.440 に答える