如何访问 searchBar 的明文按钮?
Posted
技术标签:
【中文标题】如何访问 searchBar 的明文按钮?【英文标题】:How to access searchBar's clear text button? 【发布时间】:2010-12-02 04:30:55 【问题描述】:当我点击 tableView 搜索上的“清除”按钮 (编辑时出现的那个) 时,我试图让键盘消失。如何检测何时单击“清除”按钮,以便我可以辞职 firstResponder? 我已经在textDidChange
方法中尝试过这个:
if (SearchBar.text == @"")
[SearchBar resignFirstResponder];
NSLog(@"clear called");
没用……也试过了:
if (SearchBar.text == nil)
[SearchBar resignFirstResponder];
NSLog(@"clear called");
这两种方法都没有显示它们被调用过。有什么想法吗?
编辑:现在 resignFirstResponder 似乎不起作用。键盘停留在屏幕上。我做错了什么?
【问题讨论】:
【参考方案1】:对于字符串比较,您应该使用
if([SearchBar.text isEqualToString: @""])
【讨论】:
是的,就是用那个方法。谢谢,这成功了。现在由于某种原因调用resignFirstResponder
不起作用。那好吧。 :)【参考方案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
编辑:没关系,上面回答了=)
【讨论】:
嗯,这可行,但它比我的目的要复杂一些。不过,感谢您提供帮助!【参考方案3】:我知道这个问题很老了,但另一种方法是:
if(searchText.length == 0)
在- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
【讨论】:
其实这可能是最干净的处理方式,但我当时并不知道。感谢分享。以上是关于如何访问 searchBar 的明文按钮?的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试编辑文本时,searchBar.rx.textDidBeginEditing 不起作用
Swift:searchBar - 如何更改“取消”按钮标题