1. ホーム
  2. ios

[解決済み] ナビゲーションバーの表示/非表示

2022-06-23 07:06:09

質問

2つのバーボタンで構成されるナビゲーションバーがあるアプリがあります。ユーザーが画面をダブルタップしたときに、このナビゲーションバーを表示/非表示にしたいのですが、可能でしょうか?

初期状態では、ナビゲーションバーは非表示になっているはずです。ユーザーが画面をダブルタップすると、iPhone のフォト ギャラリーで見られるようなアニメーションとともにナビゲーション バーが表示されるようにします。

どのようにすればよいのでしょうか。提案はいつでも歓迎します。

どのように解決するのですか?

これは数行のコードに収まるようなものではありませんが、あなたにとって有効かもしれないアプローチのひとつです。

ナビゲーションバーを非表示にするには

[[self navigationController] setNavigationBarHidden:YES animated:YES];

表示するために

[[self navigationController] setNavigationBarHidden:NO animated:YES];

このメソッドのドキュメントは にあります。 .

ダブルクリックやダブルタップを検出するために、サブクラス UIView のサブクラスを作成し、そのインスタンスをビューコントローラの view プロパティに追加します。

ビューのサブクラスで、その -touchesEnded:withEvent: メソッドをオーバーライドし、2つの連続したタップの間の時間を測定することによって、一定時間内に何回タッチされたかを数えます。 CACurrentMediaTime() . または、以下の結果をテストしてください。 [touch tapCount] .

2回タップされた場合、サブクラス化されたビューは NSNotification を発行し、ビューコントローラがそれをリッスンするように登録されています。

ビューコントローラが通知を聞くと、ナビゲーションバーの現在の可視状態に応じて、前述のコードを使用してナビゲーションバーを非表示または表示するセレクタを起動します(ナビゲーションバーの isHidden プロパティを読み取ることによってアクセスします。

EDIT

タップイベントの処理については、iOS3.1以前から使えると思います。その UIGestureRecognizer クラスは、最近では、ダブルタップを処理するためのより良いアプローチでしょう。

編集2

ナビゲーションバーを非表示にするSwiftの方法は

navigationController?.setNavigationBarHidden(true, animated: true)

表示するために

navigationController?.setNavigationBarHidden(false, animated: true)