iOS使用UISearchBar的右边cancelButton的问题
来源:互联网 发布:自拍软件哪个好 编辑:程序博客网 时间:2024/05/24 00:28
苹果自带的UISearchBar还是蛮好用的,但是在使用过程中也遇到一些坑,比如如何找到searchBar右侧的取消button,以及第一次点击的时候会执行UISearchBar的代理方法:searchBarTextDidBeginEditing 的问题。
首先如何获取cancelButton并且进行自定义呢?
for (UIView *viewin [[_searchBar.subviewslastObject] subviews]) {
if ([view isKindOfClass:[UIButton class]]) {
UIButton *cancelBtn = (UIButton *)view;
cancelBtn.enabled = YES;
[cancelBtn setTitle:@"取消"forState:UIControlStateNormal];
[cancelBtn setTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal];
[cancelBtn addTarget:selfaction:@selector(cancelButtonClicked:)forControlEvents:UIControlEventTouchUpInside];
}
}
上面这是复杂一点的方式,下面用更简单的方式获取,那就是利用kvo原理:UIButton *cancelBtn = [_searchBarvalueForKeyPath:@"cancelButton"];
cancelBtn.enabled = YES;
[cancelBtn setTitle:@"取消"forState:UIControlStateNormal];
[cancelBtn setTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal];
[cancelBtn addTarget:selfaction:@selector(cancelButtonClicked:)forControlEvents:UIControlEventTouchUpInside];
大家可能注意到,其中有一行代码 cancelBtn.enabled = YES; 为什么要写这句代码呢?是因为searchBar加载出来以后右侧的取消按钮是默认enabled = NO,所以才会出现点击的时候执行searchBarTextDidBeginEditing方法。注意一点,在搜索完成,searchBar失去焦点的地方,也需要获取到cancelBtn并且设置 cancelBtn.enabled = YES;
比如在点击键盘上的搜索按钮:
//键盘上搜索按钮被点击
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
UIButton *cancelBtn = [searchBar valueForKeyPath:@"cancelButton"]; //首先取出cancelBtn
cancelBtn.enabled = YES;
}
这样点击取消按钮就会直接退出搜索页面,而不是执行searchBarTextDidBeginEditing方法。希望以上内容对你有帮助!
- iOS使用UISearchBar的右边cancelButton的问题
- 【iOS】UISearchBar修改右边取消按钮的方法
- iOS之UISearchBar的使用
- 修改UISearchBar cancelButton title
- 改uisearchbar右边取消按钮的图片
- IOS开发----UISearchBar,搜索框的使用
- iOS UISearchBar 和 UISearchDisplayController的使用
- UISearchController使用时,UISearchBar显示的问题
- UISearchBar的使用
- UISearchBar 的使用
- UISearchBar的使用
- UISearchBar 的使用
- UISearchBar的使用
- UISearchBar的使用
- UISearchBar的使用
- ios搜索框功能的实现/UISearchBar/UISearchController的使用
- IOS 自定义UISearchBar的背景图
- 自定义UISearchBar注意的问题
- linux 下svn 忽略某类文件和目录
- python return
- Java 打印堆栈的几种方法
- 机器学习基础
- Android View框架总结(八)ViewGroup事件分发机制
- iOS使用UISearchBar的右边cancelButton的问题
- 第一篇博客
- 爬虫开源项目及其思想
- Fiddler (一) 教程
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- 图像预处理-光照补偿
- tjut 3478
- 对数据库操作时,提示数据库打开失败
- Swaps in Permutation