当我在tableView搜索中点击“清除”按钮(编辑时出现的按钮)时,我试图让键盘消失。如何检测单击“清除”按钮的时间,以便我可以重新签名第一个响应者?我已经在textDidChange
方法中尝试了这个:
if (SearchBar.text == @"") {
[SearchBar resignFirstResponder];
NSLog(@"clear called");
}
哪个不起作用......还试过:
if (SearchBar.text == nil) {
[SearchBar resignFirstResponder];
NSLog(@"clear called");
}
这两种方法都没有显示它们被调用。有任何想法吗?
编辑:现在resignFirstResponder似乎没有工作。键盘停留在屏幕上。我做错了什么?
对于字符串比较,您应该使用
if([SearchBar.text isEqualToString: @""])
您可以通过注册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
}
}
编辑:没关系,上面回答=)
我知道这个问题很老,但另一种方法是:
if(searchText.length == 0)
在- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText