UINavigationBarでのスワイプの検出
-
05-07-2019 - |
質問
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
が複数回呼び出される可能性があります。
所属していません StackOverflow