2 つのバー ボタンで構成されるナビゲーション バーを備えたアプリがあります。ユーザーが画面をダブルタップしたときに、このナビゲーション バーを非表示または表示したいと思います。
最初は、ナビゲーション バーは非表示になっている必要があります。ユーザーが画面をダブルタップすると、iPhone の写真ギャラリーで見られるようなアニメーションとともにナビゲーション バーが表示されます。
これをどうやったら実現できるでしょうか? ご提案はいつでも歓迎します。
ベストアンサー1
これは数行のコードに収まるものではありませんが、これはあなたにとって有効な方法の 1 つです。
ナビゲーション バーを非表示にするには:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
それを表示するには:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
この方法のドキュメントはこちらから入手可能。
「ダブルクリック」またはダブルタップをリッスンするには、サブクラスを作成UIView
し、そのサブクラスのインスタンスをビュー コントローラーのview
プロパティにします。
ビューのサブクラスで、-touchesEnded:withEvent:
連続した2回のタップ間の時間を測定して、一定時間内に何回タッチされたかを数える方法。CACurrentMediaTime()
または、結果をテストします[touch tapCount]
。
2回のタップがあった場合、サブクラス化されたビューはNSNotification
ビュー コントローラがリッスンするように登録したものです。
ビューコントローラが通知を聞くと、ナビゲーションバーの現在の表示状態に応じて、前述のコードを使用してナビゲーションバーを非表示または表示するセレクタを起動します。ナビゲーションバーの現在の表示状態は、ナビゲーションバーの読み取りによってアクセスされます。isHidden
財産。
編集
タップイベントの処理に関する私の回答の部分は、iOS 3.1以前ではおそらく役立つでしょう。UIGestureRecognizer
最近では、ダブルタップを処理するには、おそらくクラスの方がよいアプローチです。
編集2
ナビゲーション バーを非表示にする Swift の方法は次のとおりです。
navigationController?.setNavigationBarHidden(true, animated: true)
それを表示するには:
navigationController?.setNavigationBarHidden(false, animated: true)