iPhone アプリで検索機能に UISearchBar を使用したときのメモです。
SearchBar という名前のプロジェクトを ViewBased で作成したとして書きます。

UISearchBar を配置

IB で SearchBarView に UISearchBar を配置します。配置した UISearchBar を右クリックして delegate と File’s Owner を接続しておきます。これでUISearchBar のイベントが SearchBarViewController: に通知されます。

delegate の設定

delegate の設定

SearchBarViewContoroller.m

検索実行したときは searchBarSearchButtonClicked: が呼ばれます。インクリメンタルサーチなどをしたい場合は UISearchBar の文字が変更されるたびに searchBar: が呼ばれます。

searchBarSearchButtonClicked: の中で [searchBar resignFirstResponder]; としているのは検索実行後にキーボードを隠すためです。

- (void) searchItem:(NSString *) searchText {
    // 検索処理
}

- (void) searchBarSearchButtonClicked: (UISearchBar *) searchBar {
	[searchBar resignFirstResponder];
	[self searchItem:searchBar.text];
}

- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *) searchText {
	NSLog(@"serch text=%@", searchText);
	if ([searchText length]!=0) {
		// インクリメンタル検索など
	}
}

ブックマークボタンとキャンセルボタン

IB で UISearchBar の属性を変えることにより、検索バーにブックマークボタンやキャンセルボタンを表示することができます。それぞれ、searchBarBookmarkButtonClicked: 、searchBarCancelButtonClicked: で受け取れます。

ブックマークボタンとキャンセルボタン

ブックマークボタンとキャンセルボタン

UISearchBar のその他の属性

autocapitalizationType
先頭の文字を自動的に大文字にするか。デフォルトは大文字になります。

keyboardType
最初に表示するキーボードのタイプを指定できます。

関連する投稿