2

アプリによって自動的に表示される UINavigationBar でスワイプを検出するようにビュー コントローラーを取得しようとしていますが、スワイプの検出を拒否します。それを行う方法はありますか?

4

1 に答える 1

9

ナビゲーション バーで左へのスワイプを検出したい場合、ナビゲーション コントローラーを作成するときに次のようにすることができます。

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

于 2011-04-26T22:21:12.220 に答える