このエントリーをはてなブックマークに追加このエントリをつぶやく

UISearchBarまとめ

search barという名前から検索に特化したゴージャスな機能を勝手に想像していましたが、見た目はただのテキストフィールドで申し訳程度に虫眼鏡のアイコンがついています。
APIリファレンスも何だかやる気の感じられない説明で、具体的にどんなことができるのかよくわかりません。
今回は画像とともにUISearchBarのいろんな顔を見ていきます。

素のUISearchBar

素のUISearchBar

ツールバー風の背景も含めてUISearchBarです。
この丸みと虫眼鏡がポイントらしく、Appleのヒューマンインターフェイスガイドラインにも普通のテキストフィールドはユーザが期待する外観ではないので検索には使うなと書かれています。

キャンセルボタンつきのUISearchBar

キャンセルボタンつきのUISearchBar

showsCancelButtonプロパティをYESにするとキャンセルボタンが現れました。
アニメーションでにゅるっと出すこともできます。
押してもデフォルトの動作があるわけではないので、自分でデリゲートメソッドを実装する必要があります。

ブックマークボタンつきのUISearchBar

ブックマークボタンつきのUISearchBar

showsBookmarkButtonプロパティをYESにするとブックマークボタンが現れます。
こちらもデフォルト動作はなく、完全に開発者に一任されています。
標準のマップアプリだと、ブックマーク/履歴/連絡先を選択する画面を呼び出すようになっていますね。

検索結果ボタンつきのUISearchBar

検索結果ボタンつきのUISearchBar

問題はこれ。
showsSearchResultsButtonプロパティをYESにすることで現れますが、どんな用途に使えばいいのかわかりません。
さらにsearchResultsButtonSelectedをYESにすると……

選択された検索結果ボタンつきのUISearchBar

選択された検索結果ボタンつきのUISearchBar

選択中を示すハイライト表示に!
微妙に黒っぽくなっているのがわかります。
素直に考えて検索結果のon/offを切り替えるボタンなのかと思いきや、検索バーに1文字でも入力すると消去ボタンに置き換わる謎の仕様。

消える検索結果ボタン

消える検索結果ボタン

この機能を有効活用しているアプリはあるのでしょうか……

スコープバーつきのUISearchBar

スコープバーつきのUISearchBar

こちらはUISegmentControl……ではなく、スコープバーです。
任意の項目をセットしてshowsScopeBarプロパティをYESにすることで現れます。
標準のメールアプリで検索対象とするフィールドを限定するのに使われています。

プロンプトつきのUISearchBar

プロンプトつきのUISearchBar

promptプロパティでちょっとしたコメントを表示することもできます。
ただし、スコープバーもそうでしたが、sizeToFitメソッドでビュー自体のサイズを調整しないと正しくレイアウトされません。
Bar仲間であるUINavigationBar(正確にはUINavigationItem)のpromptプロパティはリサイズまで面倒みてくれるのに……

本当の顔

帯に短し、たすきに長しの感があるUISearchBar。
実はUISearchDisplayControllerと併用することでこそ、その真価を発揮するようです。
恥ずかしながらそんなクラスがあるとは夢にも思いませんでした。

横画面でのレイアウト

横画面でのレイアウト

こんなことも自動でやってくれます。

カテゴリー: プログラミング   タグ:   この投稿のパーマリンク

コメントは受け付けていません。