iOS 修改UISearchBar cancel 按钮
Posted zhangdalang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 修改UISearchBar cancel 按钮相关的知识,希望对你有一定的参考价值。
修改UISearchBar cancel 按钮
最近做一个UISearchController的搜索功能,可是UISearchBar的取消按钮标题为“cancel”,想要修改为“取消”,参考了许多东西,大都是要遍历UISearchBar的子控件,找到类型为“UIButton”或子控件的父类是“UIButton”的子控件,通过UIButton的方法来修改它的标题或颜色。
例如:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
// ios 7.0+ for (id view in [self.subviews[0] subviews])
// iOS 7.0- for (id view in self.subviews)
for (id view in [self.subviews[0] subviews])
if ([view isKindOfClass:[UIButton class]])
UIButton *button = (UIButton *)view;
[button setTitle:title forState:UIControlStateNormal];
break;
但这样不够完美,当App启动后第一次点击搜索框输入内容搜索时,“cancel”按钮的标题是不会改变的,只有取消后再次编辑才会改变。原因是在searchBarTextDidBeginEditing:
方法中执行修改的时候UISearchBar的子控件或子控件的子控件中还没有UIButton类型的控件,因为不好把握“cancel”按钮加入到searchBar中的时机,所以“cancel”按钮的修改不太完美。
后来查找了很多方法,发现两句代码就搞定了:
[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTitle:@"取消"];
“cancel”按钮在searchBar中是”UINavigationButton”类型的,UINavigationButton的父类是UIButton。为什么UIBarButtonItem的appearance能够修改她还不知道。
以上是关于iOS 修改UISearchBar cancel 按钮的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 8 中更改 UISearchBar 取消按钮文本
如何将UISearchBar上"Cancel"按钮改为”取消“?