質問

View Controllerで、アプリによって自動的に表示されるUINavigationBarのスワイプを検出しようとしていますが、スワイプの検出を拒否しています。できる方法はありますか?

役に立ちましたか?

解決

Navigation Barの左へのスワイプを検出する場合、 Navigation Controllerを作成するとき

   UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewSwipedLeft:)];
   [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
   [self.navigationController.navigationBar addGestureRecognizer:swipeLeft];

次に、以下のようなメソッドを作成して処理します:

-(void) didSwipedLeft: (UISwipeGestureRecognizer *) gesture {

  if (gesture.state != UIGestureRecognizerStateEnded) {
      return;
  }

  //do something    
}

OBS:ナビゲーションコントローラーはアプリケーションライフサイクルのいくつかのステップで存続するクラスであるため、それに注意を払い、Navigation Controllerを作成するときにのみジェスチャーレコグナイザーを追加することが重要です(追加のみを意味します)ジェスチャレコグナイザーを重ねたままにしないようにすると、メモリリークが発生するだけでなく、メソッド didSwipedLeft が複数回呼び出される可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top