UISearchBar獲得焦點(diǎn)和不獲得焦點(diǎn)的情況下,UISearchBar上的取消按鈕的樣式和可用屬性也是不一樣的柬讨。
但是最近的項(xiàng)目要求扒接,取消按鈕一直可以點(diǎn)擊伪货,本人又不想為了這么一個(gè)小需求再去自定義個(gè)一個(gè)UISearchBar。通過遍歷UISearchBar的子視圖钾怔,發(fā)現(xiàn)“取消”按鈕在UISearchBar失去焦點(diǎn)之后碱呼,其enabled屬性為no。所以找到了原因便找到了解決辦法宗侦。所以便通過以下方法來改變?nèi)∠粹o的樣式和可用屬性愚臀。
在SeaarchBar的代理方法中調(diào)用searchBarResignAndChangeUI方法,對(duì)取消按鈕做改變
//1矾利、鍵盤搜索按鈕點(diǎn)擊
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[self searchBarResignAndChangeUI];
}
//2姑裂、UISearchBar結(jié)束編輯
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
[self searchBarResignAndChangeUI];
}
searchBarResignAndChangeUI方法的實(shí)現(xiàn)如下:
- (void)searchBarResignAndChangeUI{
[_searchBar resignFirstResponder];//失去第一響應(yīng)
[self changeSearchBarCancelBtnTitleColor:_searchBar];//改變布局
}
#pragma mark - 遍歷改變搜索框 取消按鈕的文字顏色
- (void)changeSearchBarCancelBtnTitleColor:(UIView *)view{
if (view) {
if ([view isKindOfClass:[UIButton class]]) {
UIButton *getBtn = (UIButton *)view;
[getBtn setEnabled:YES];//設(shè)置可用
[getBtn setUserInteractionEnabled:YES];
//設(shè)置取消按鈕字體的顏色“#0374f2”?
[getBtn setTitleColor:[UIColor colorWithHexString:@"#0374f2"] forState:UIControlStateReserved];
[getBtn setTitleColor:[UIColor colorWithHexString:@"#0374f2"] forState:UIControlStateDisabled];
return;
}else{
for (UIView *subView in view.subviews) {
[self changeSearchBarCancelBtnTitleColor:subView];
}
}
}else{
return;
}
}
如此便能實(shí)現(xiàn)取消按鈕一直是可點(diǎn)擊的馋袜。且“取消”按鈕的文字顏色一直是可點(diǎn)擊性的藍(lán)色。