[iOS 8] ナビゲーションバーのタイトルタップを検知する
ナビゲーションバーのタイトルタップを検知する
情報があまりなかったので共有。
ハマりポイントは以下のとおり。
- UILabel の userInteractionEnabled はデフォルト false
サンプルコード
// タイトルを表示するラベルを作成 let label = UILabel() label.text = "Title" label.sizeToFit() // タップジェスチャーを設定 let gestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:") label.addGestureRecognizer(gestureRecognizer) // チクショー label.userInteractionEnabled = true // ナビゲーションバーの titleView に上で作成したラベルを設定 navigationItem.titleView = label
タイトルタップ時に呼ばれるメソッド
func tapped(tapGestureRecognizer: UITapGestureRecognizer) { println("tapped.") }
まとめ
ナビゲーションバー自体にタップジェスチャーを設定することもできますが、それだと「戻る」ボタンを押してもジェスチャーで設定しているアクションが優先されるので、こちらのほうがいいと思います。
フォントなどは適宜調整してください。