如何访问searchBar的明文按钮?

时间:2010-12-02 04:30:55

标签: iphone objective-c uitableview uisearchbar first-responder

当我在tableView搜索中点击“清除”按钮(编辑时出现的那个)时,我试图让键盘消失。如何检测单击“清除”按钮的时间,以便我可以重新签名第一个响应者? 我已在textDidChange方法中尝试过此操作:

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

哪个不起作用......还尝试过:

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

两种方法都没有显示它们被调用。有什么想法吗?

编辑:现在resignFirstResponder似乎无法正常工作。键盘停留在屏幕上。我做错了什么?

3 个答案:

答案 0 :(得分:2)

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

if([SearchBar.text isEqualToString: @""])

答案 1 :(得分:2)

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

[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
  }
}

编辑:从不回答,上面回答=)

答案 2 :(得分:2)

我知道这个问题很老,但另一种方法是:

if(searchText.length == 0)

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

中的