我的界面中有一个UISearchBar,我想自定义输入一些文本后出现在搜索栏中的小清除按钮的行为(它是一个带有十字的小灰色圆圈,出现在右边搜索领域的一面).
基本上,我希望它不仅清除搜索栏的文本(这是默认的实现),而且还要清除我界面中的其他东西,但是调用我自己的方法之一.
我在UISearchBar类或UISearchBarDelegate协议的文档中找不到任何内容 - 看起来您不能直接访问此行为.
我注意到的一件事是文档解释了委托方法:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
Run Code Online (Sandbox Code Playgroud)
点击清除按钮后调用.
我最初在该方法中编写了一些代码来检查搜索栏的文本属性,如果它是空的,那么它已被清除并执行我所有其他的东西.
这有两个问题:
首先,由于某些原因我无法理解,即使我在我的方法结束时告诉搜索栏resignFirstResponder,某些东西,某处正在将其设置回到firstFirstResponder.真烦人......
其次,如果用户没有使用清除按钮,并且只是使用键盘上的删除按钮删除栏中的文本,则此方法将被触发,其搜索结果将消失.不好.
任何正确方向的建议或指示都会很棒!
谢谢!
在UISearchBar上,有一个X元素允许您一次清除所有内容.有没有办法在发生这种情况时收到通知?
UISearchBarDelegate::searchBarCancelButtonClicked 仅在点击"取消"按钮时触发.
我有一个xCode项目,其中包含一个带有"搜索栏和搜索显示控制器"的表视图,以允许用户优化显示的项目列表.一般而言,遵循http://www.raywenderlich.com/16873/how-to-add-search-into-a-table-view中提供的指导.我最近下载了支持iOS 7的最新xCode(版本5.0(5A1413)),并且正在测试有关不同目标的应用程序.
在iOS 6目标(模拟器或真实设备)上运行此应用程序时,它按预期工作,这意味着按取消按钮将删除搜索栏并按清除按钮(小灰色x)清除已输入的所有搜索条件用户.但是当项目在iOS 7目标上运行时,clear和cancel按钮都不起作用.
searchBarCancelButtonClicked方法在这个项目中实现,我已经验证当目标运行iOS 7时它没有被调用.
- (void)searchBarCancelButtonClicked:(UISearchBar *)SearchBar
{
NSLog(@"searchBarCancelButtonClicked called");
self.searchBar.text = nil;
…
// Hide Search bar when cancelled
[self hideSeachBar];
[self.searchBar resignFirstResponder];
…
}
Run Code Online (Sandbox Code Playgroud)
我的表视图控制器设置为UISearchDisplayDelegate和UISearchBarDelegate.而且它似乎仍在作为searchBar:textDidChange:在iOS 6或7目标上调用.
@interface ItemViewController () <UISearchDisplayDelegate, UISearchBarDelegate>
…
@end
Run Code Online (Sandbox Code Playgroud)
我看不到与此或任何iOS 7更改资料相关的任何其他帖子(例如https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1)提到了为支持iOS7而需要进行的任何重新编码.
有什么想法吗?谢谢
我可以使用UITextField以下代码添加一个小的十字按钮,用于在一次单击中清除所有文本.
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
Run Code Online (Sandbox Code Playgroud)
我也实施了UITextFieldDelegate.
我想UINavigationBar根据我的变化激活/停用右边的按钮UITextField.规则很简单:如果文本字段至少有一个字符,只需启用该按钮,否则禁用它.
我实现了UITextField委托方法textField:shouldChangeCharactersInRange:来不断检查需求并更新按钮的状态.
现在我的问题是,当我单击文本字段上的小十字按钮时,textField:shouldChangeCharactersInRange:不会调用该方法.因此缺少必要的操作.如何识别清除按钮的命中事件?
一些图片显示我在说什么.
初始阶段:此处,"完成"按钮被禁用,因为文本字段中没有字母

键入字母时,启用"完成"按钮

现在,如果我点击清除按钮,仍然会启用"完成"按钮.这是错的.
