#pragma mark - UISearchBarDelegate
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
NSLog(@"start!");
searchBar.showsCancelButton = YES;
NSLog(@"%@",self.searchController.searchBar.subviews[0].subviews);
for (UIView *view in self.searchController.searchBar.subviews[0].subviews) {
if ([view isKindOfClass:[UIButton class]]) {
UIButton *cancelBtn = (UIButton *)view;
[cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
[cancelBtn setTitleColor:APP_GLOBAL_BUTTON_COLOR forState:UIControlStateNormal];
}
}
}
或者使用KVC的方式:
searchBar.showsCancelButton = YES;
UIButton *cancelBtn = [searchBar valueForKey:@"_cancelButton"];
[cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
[cancelBtn setTitleColor:APP_GLOBAL_BUTTON_COLOR forState:UIControlStateNormal];
必須在UISearchBar代理方法中設(shè)置才生效臊泌,可能是因?yàn)榇藭r(shí)searchBar的opaque屬性才被設(shè)置為NO。
這是在viewDidLoad中初始化searchController時(shí)的searchBar:
**2015-11-25 21:26:53.256 wjhg[56555:1674774] ****網(wǎng)絡(luò)變化通知:****2**
**(lldb) ****po self.searchController.searchBar**
<UISearchBar: 0x7ff553c652a0; frame = (0 0; 375 44); text = ''; gestureRecognizers = <NSArray: 0x7ff553c5e3e0>; layer = <CALayer: 0x7ff553c5c430>>
這是在searchBarTextDidBeginEditing
方法中po的searchBar载碌,對(duì)比發(fā)現(xiàn)多了一個(gè)opaque屬性,該屬性意為不透明。
**2015-11-25 21:27:09.415 wjhg[56555:1674774] start!**
**(lldb) ****po self.searchController.searchBar**
<UISearchBar: 0x7ff553c652a0; frame = (55 0; 265 44); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x7ff553c5e3e0>; layer = <CALayer: 0x7ff553c5c430>>