私のアプリケーションでは、デフォルトのIOS検索バーを使用して検索機能を使用しています。検索用の文字列を配置すると正常に機能しますが、最初の検索後にデータソース全体(元のコンテンツ)を表示する必要があります。私の機能は、検索文字列が空の場合ですデータ ソース全体が表示されます。私の問題は、デフォルトの検索バーで検索文字列を空にすると、検索ボタンが自動的に非表示の状態になることです。文字列が空でも検索ボタンを有効にする必要があります。
12 に答える
searchBar.enablesReturnKeyAutomatically = NO;
実際には、iOS 7+でテスト済みを設定するだけです
このコードは、空の文字列がある場合に検索ボタンを表示します。
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
self.tblView.allowsSelection = NO;
self.tblView.scrollEnabled = NO;
UITextField *searchBarTextField = nil;
for (UIView *subview in self.searchBar.subviews)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
スイフト3/iOS10
for view1 in searchBar.subviews {
for view2 in view1.subviews {
if let searchBarTextField = view2 as? UITextField {
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}
テキストなしでリターンキーを有効にするには、次のコードを使用します
UITextField *searchField = nil;
for (UIView *subview in searchBar.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchField = (UITextField *)subview;
break;
}
}
if (searchField) {
searchField.enablesReturnKeyAutomatically = NO;
}
シンプルな Swift バージョン:
if let searchTextField:UITextField = searchBar.subviews[0].subviews[2] as? UITextField {
searchTextField.enablesReturnKeyAutomatically = false
}
受け入れられた回答とほぼ同じですが、iOS 7 を使用している場合は、検索バーの変更により追加の for ループが必要になります
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
UITextField *searchBarTextField = nil;
for (UIView *mainview in self.searchBar.subviews)
{
for (UIView *subview in mainview.subviews) {
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
カスタムview
& を作成して、キーボードを削除するview
ものを追加します。の方法でbutton
そのビューを追加します。そのボタンをクリックして、キーボードとそのために作成した を再署名します。また、そのボタンをクリックして検索したい場合は、それを行うこともできます。詳細については、画像を参照してください。- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
delegate
UISearchBar
view
button
これがSwiftを使用したソリューションです。それを viewDidLoad 関数に貼り付けて、コードに searchBar の IBOutlet があることを確認してください。(以下の例では、inputSearchBar 変数は IBOutlet です)
// making the search button available when the search text is empty
var searchBarTextField : UITextField!
for view1 in inputSearchBar.subviews {
for view2 in view1.subviews {
if view2.isKindOfClass(UITextField) {
searchBarTextField = view2 as UITextField
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}