アプリでスワイプして ViewControllers をプッシュまたはポップしたいのですが、それにスワイプジェスチャを追加できることがわかっています。しかし、画面をスワイプすると、現在のViewControllerの後にスワイプジェスチャが続き、次のViewControllerがスワイプだけで押し込まれます。どうすればこれを行うことができますか、ありがとう!
3 に答える
UINavigationController
;では不可能です。を組み込んだ独自のナビゲーションコントローラー(非常に簡単なはずです)を作成する必要がありますUIPanGestureRecognizer
。
iOS 7用の編集:おそらくを使用することをお勧めしますUIScreenEdgePanGestureRecognizer
。
ジェスチャー レコグナイザーには、ボタンと同じようにアクション メソッドがあります。これをアクションメソッドに入れるだけです:
NextViewController *next = [[NextViewController alloc] init ....];
[self.navigationController pushViewController:next animated:YES];
ジェスチャ レコグナイザーについてお読みください。それらを作成してオブジェクトに追加できます。例えば
UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(longPress:)];
longTap.minimumPressDuration = 1.0;
[cell addGestureRecognizer:longTap];
ここで、LongPress 認識エンジンを作成し、セルに追加しました。セルを長押し (1.0 秒) すると、セレクター (longPress:) が呼び出されます。長押しでどんなコードでも作れます。
-(void)longPress : (UILongPressGestureRecognizer *)rec {
if (rec.state == UIGestureRecognizerStateBegan) {
NSLog (@"I've longPressed");
}
}
同じ方法で、さまざまな認識機能を使用できます。
プッシュとポップについて。これらはナビゲーション コントローラのメソッドです。プッシュ - あなたが彼に見せたコントローラーで前進します。
NextController *goNext = [[NextViewController alloc] init];
[self.navigationController pushViewController:goNext animated:YES];
それは NextController に行きます。ポップ - 前のコントローラーに戻ります。
ここでは、前のコントローラーを表示する必要はありません。navControllerに戻って言うだけです
[self.navigationController popViewControllerAnimated:YES];