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

对于字符串比较,您应该使用

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

您可以尝试text通过注册 KVO 通知来查看搜索栏的属性:

[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(searchText.length == 0)

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

于 2013-04-22T07:02:59.883 回答