如何访问searchBar的明文按钮?

问题描述 投票:1回答:3

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

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

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

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

这两种方法都没有显示它们被调用。有任何想法吗?

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

iphone objective-c uitableview uisearchbar first-responder
3个回答
2
投票

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

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

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
投票

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

if(searchText.length == 0)

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

© www.soinside.com 2019 - 2024. All rights reserved.