当我在tableView搜索中点击“清除”按钮(编辑时出现的那个)时,我试图让键盘消失。如何检测单击“清除”按钮的时间,以便我可以重新签名第一个响应者? 我已在textDidChange
方法中尝试过此操作:
if (SearchBar.text == @"") {
[SearchBar resignFirstResponder];
NSLog(@"clear called");
}
哪个不起作用......还尝试过:
if (SearchBar.text == nil) {
[SearchBar resignFirstResponder];
NSLog(@"clear called");
}
两种方法都没有显示它们被调用。有什么想法吗?
编辑:现在resignFirstResponder似乎无法正常工作。键盘停留在屏幕上。我做错了什么?
答案 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
中的