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