1

tableView検索で「クリア」ボタン(編集時に表示されるボタン)を押すと、キーボードが消えようとしていました。「クリア」ボタンがクリックされたことを検出して、firstResponder を辞任させるにはどうすればよいですか? 私はすでにtextDidChangeメソッドでこれを試しました:

if (SearchBar.text == @"") {
    [SearchBar resignFirstResponder];
    NSLog(@"clear called");
}

これは機能しませんでした...そしてまた試しました:

 if (SearchBar.text == nil) {
    [SearchBar resignFirstResponder];
    NSLog(@"clear called");
}

どちらのメソッドも、呼び出されたことを示していません。何か案は?

編集:現在、resignFirstResponder は機能していないようです。キーボードは画面上に残ります。私は何が間違っているのですか?

4

3 に答える 3

2

textKVO 通知に登録することで、検索バーのプロパティを監視することができます。

[self.searchBar addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];

そして実装:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
  if (object == self.searchBar && [keyPath isEqualToString:@"text"]) {
    // Handle the new value of self.searchBar.text
  }
}

編集:気にしないでください、上記で答えました=)

于 2010-12-02T04:41:29.863 に答える
2

文字列の比較には、使用する必要があります

if([SearchBar.text isEqualToString: @""])
于 2010-12-02T04:34:43.177 に答える
2

この質問は古いことは知っていますが、これを行う別の方法は次のとおりです。

if(searchText.length == 0)

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

于 2013-04-22T07:02:59.883 に答える