この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ナビゲーションバーのタイトルタップを検知する
情報があまりなかったので共有。
ハマりポイントは以下のとおり。
- 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.")
}
まとめ
ナビゲーションバー自体にタップジェスチャーを設定することもできますが、それだと「戻る」ボタンを押してもジェスチャーで設定しているアクションが優先されるので、こちらのほうがいいと思います。
フォントなどは適宜調整してください。