3

iOS 7 では、ユーザーが以前 UISearchBar にあったテキストをクリアすると、青色の [検索] ボタンが無効になります。これを変更する方法はありますか? 検索用語でフィルタリングするのではなく、テキストがない場合でも「検索」を押して、リスト内のすべてのアイテムを表示できるようにしたい。(現在、ユーザーが以前の検索語をクリアしようとすると、青い [検索] ボタンが無効になります。)

デリゲートの searchBarTextDidEndEditing コールバックで新しい検索をトリガーして、[Dismiss ]キーボードボタンですべての結果を含むリストが更新されるようにすることもできますが、理想的には、フィールドにテキストがない場合でも青い [検索] ボタンを使用できるようにしたいと考えています。 . これは可能ですか?

4

2 に答える 2

0

ヘッダーをざっと見てみると、達成しようとしているのは、UISearchBar の使用目的ではないようです。必要なものを正確に取得するには、おそらくすべての検索トリミングを行わずに、通常のテキスト フィールドで作業する必要があります。

そうは言っても、私はほとんどうまくいくハックを持っています。使用していないときは、検索バーにダミー文字列を入力します。最初の文字を入力すると、検索ボタンが無効になる瞬間があります。しかし、ほとんどの場合、必要なものが得られます。

NSString *kDummyString = @" ";

@implementation CDViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
    self.searchBar.text = kDummyString;
}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if (searchText.length < 1) {
        searchBar.text = kDummyString;
    }
}

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range     replacementText:(NSString *)text
{
    BOOL isPreviousTextDummyString = [searchBar.text isEqualToString:kDummyString];
    BOOL isNewTextDummyString = [text isEqualToString:kDummyString];
    if (isPreviousTextDummyString && !isNewTextDummyString && text.length > 0) {
        searchBar.text = @"";
    }

    return YES;
}

@end 
于 2013-10-23T02:45:53.183 に答える