27

私のアプリケーションでは、デフォルトのIOS検索バーを使用して検索機能を使用しています。検索用の文字列を配置すると正常に機能しますが、最初の検索後にデータソース全体(元のコンテンツ)を表示する必要があります。私の機能は、検索文字列が空の場合ですデータ ソース全体が表示されます。私の問題は、デフォルトの検索バーで検索文字列を空にすると、検索ボタンが自動的に非表示の状態になることです。文字列が空でも検索ボタンを有効にする必要があります。

4

12 に答える 12

37

searchBar.enablesReturnKeyAutomatically = NO;実際には、iOS 7+でテスト済みを設定するだけです

于 2014-12-10T10:10:33.057 に答える
24

このコードは、空の文字列がある場合に検索ボタンを表示します。

- (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;
}
于 2013-01-11T05:17:03.670 に答える
4

スイフト3/iOS10

for view1 in searchBar.subviews {
        for view2 in view1.subviews {
            if let searchBarTextField = view2 as? UITextField {
                searchBarTextField.enablesReturnKeyAutomatically = false
                break
            }
        }
    }
于 2016-11-11T14:41:25.870 に答える
3

テキストなしでリターンキーを有効にするには、次のコードを使用します

  UITextField *searchField = nil;
  for (UIView *subview in searchBar.subviews) {
    if ([subview isKindOfClass:[UITextField class]]) {
      searchField = (UITextField *)subview;
      break;
    }
  }

  if (searchField) {
    searchField.enablesReturnKeyAutomatically = NO;
  }
于 2013-01-11T05:33:01.013 に答える
2

シンプルな Swift バージョン:

if let searchTextField:UITextField = searchBar.subviews[0].subviews[2] as? UITextField {
                searchTextField.enablesReturnKeyAutomatically = false
}
于 2016-05-10T09:39:12.317 に答える
2

受け入れられた回答とほぼ同じですが、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;
}
于 2014-01-10T05:59:29.650 に答える
2

カスタムview& を作成して、キーボードを削除するviewものを追加します。の方法でbuttonそのビューを追加します。そのボタンをクリックして、キーボードとそのために作成した を再署名します。また、そのボタンをクリックして検索したい場合は、それを行うこともできます。詳細については、画像を参照してください。- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar delegateUISearchBarviewbutton

ここに画像の説明を入力

于 2013-01-11T05:25:16.380 に答える
1

これが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
            }
        }
    }
于 2015-01-28T07:19:43.097 に答える