完了と[完了]ボタン(検索ではない)を使用したiPhoneテキスト入力
-
05-07-2019 - |
質問
iPhone SDK 3.0を使用して、入力中に表示される(オプションの)補完オプションを使用したテキスト入力、つまりフリーフォーマット入力を許可したいと思います。そのため、オプションを表示するためにUISearchBar(テキスト変更イベントがある)とUISearchDisplayControllerを使用しています。
問題は、[検索]ではなく[完了]ボタンを[完了]にしたいのですが、それを設定する方法が見つからないことです。明らかに何か不足していると感じるか、SDK APIのInterface Builderに設定するプロパティがあります。
(ストア内の)他のアプリを見て、私が望む結果(自由形式の入力、完了、完了ボタン)を達成しているので、私が見逃している別の方法があるかもしれません。ポインタを事前に感謝します。
解決
+1 walの回答についてですが、安全のために、今後のリリースでビュー階層の可能な変更に適切に対応するには、次のコードの使用を検討してください。
NSArray *subviews = [<searchBar> subviews] ;
for(id subview in subviews) {
if([subview isKindOfClass:[UITextField class]]) {
[(UITextField*)subview setReturnKeyType:UIReturnKeyDone];
}
}
他のヒント
これを正確に実装する必要があり、どこにも素晴らしい答えを見つけることができなかったので、私はいくつかの洞察を提供すると思いました。デバッガーをステップ実行し、UISearchBarを掘り下げるのは明らかです。 uisearchbarサブビュー内でUITextViewを見つけましたが、その時点で、UITextViewのハンドルを取得したら、そのUITextViewにreturnkeytypeを設定できるはずです。
擬似コード- UISearchBarObject.SubViewAtIndexOfUITextField.ReturnKeyType = UIReturnKeyType.Done
このコードをviewDidLoadに挿入します。
- (void)viewDidLoad {
...
NSArray *subviews = [self.searchDisplayController.searchBar subviews] ;
UITextField *searchField = [subviews objectAtIndex:([subviews count]-2)];
[searchField setReturnKeyType:UIReturnKeyDone];
...
}
そうでない場合、UISearchBarが使用するオブジェクトの1つにこのオプションがある可能性があります。