UISearchBarのキーボードの検索ボタンのラベルを変える

UISearchBarのキーボードのReturnキーのラベルはデフォルト「検索」になっています。
検索欄に入力すると随時検索処理を走らせて、入力が終わったらキーボードを閉じるだけの処理を行いたい場合、
「検索」ボタンだと何かしっくりこない感じがします。
そこで、キーボードの右下にある青いボタン(Returnキー)のラベルを変えてみました。


UISearchBarは、入力値はtext属性で取得出来てもTextInput自体は普通には取れませんでした。
そこで、キー値を指定して取得する方法がありました。
UISearchBarに対してvalueForKeyで「_searchField」を指定するという方法で取れます。


実装例は以下です。

//検索バー
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44.0f)];
searchBar.delegate = self;
searchBar.showsCancelButton = YES;
searchBar.placeholder = @"店名や市区名で絞り込み";
//デフォルトキーボードタイプ
searchBar.keyboardType = UIKeyboardTypeDefault;
searchBar.barStyle = UIBarStyleBlack;

//「_seachField」キーを指定してUITextFieldを取得
UITextField *searchInputTextField = [searchBar valueForKey:@"_searchField"];
//Returnキータイプを「完了」に変更
searchInputTextField.returnKeyType = UIReturnKeyDone;
//テーブルビューのヘッダーに設定
self.tableView.tableHeaderView = searchBar;

・変更前

・変更後


returnKeyTypeにはUIReturnKeyDone(完了)の他に、UIReturnKeyJoin(接続)やUIReturnKeyGo(開く)などがあります。

・参照
http://stackoverflow.com/questions/1407833/uisearchbar-text-color



ちなみに、キーボードを開いた時にReturnキーをタップ不可にしたくない場合は、
以下の設定を追加すれば入力値が0文字でもReturnキーをタップする事が出来ます。

//自動でReturnキー活性非活性の制御をOFF
searchInputTextField.enablesReturnKeyAutomatically = NO;