UISearchBar失去第一響應后,“取消”按鈕不可點擊的煩惱

UISearchBar獲得焦點和不獲得焦點的情況下,UISearchBar上的取消按鈕的樣式和可用屬性也是不一樣的。


圖1 UISearchBar獲得焦點


圖2 UISearchBar失去焦點

但是最近的項目要求,取消按鈕一直可以點擊,本人又不想為了這么一個小需求再去自定義個一個UISearchBar。通過遍歷UISearchBar的子視圖,發現“取消”按鈕在UISearchBar失去焦點之后,其enabled屬性為no。所以找到了原因便找到了解決辦法。所以便通過以下方法來改變取消按鈕的樣式和可用屬性。


在SeaarchBar的代理方法中調用searchBarResignAndChangeUI方法,對取消按鈕做改變

//1、鍵盤搜索按鈕點擊

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{

[self searchBarResignAndChangeUI];

//2、UISearchBar結束編輯

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{

[self searchBarResignAndChangeUI];

}

searchBarResignAndChangeUI方法的實現如下:

- (void)searchBarResignAndChangeUI{

[_searchBar resignFirstResponder];//失去第一響應

[self changeSearchBarCancelBtnTitleColor:_searchBar];//改變布局

}

#pragma mark - 遍歷改變搜索框 取消按鈕的文字顏色

- (void)changeSearchBarCancelBtnTitleColor:(UIView *)view{

if (view) {

if ([view isKindOfClass:[UIButton class]]) {

UIButton *getBtn = (UIButton *)view;

[getBtn setEnabled:YES];//設置可用

[getBtn setUserInteractionEnabled:YES];

//設置取消按鈕字體的顏色“#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;

}

}

如此便能實現取消按鈕一直是可點擊的。且“取消”按鈕的文字顏色一直是可點擊性的藍色。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • UISearchBar屬性相關 _searchBar = [[UISearchBar alloc] initWit...
    zhong_JF閱讀 2,225評論 0 9
  • UISearchBar屬性相關 _searchBar = [[UISearchBar alloc] initWit...
    DVWang閱讀 605評論 0 0
  • 1.UILabel 1) label.frame //CGRectMake(x, y, width, he...
    青春flame閱讀 670評論 0 2
  • 你的心酸,紋在眉間 一皺動,就像劃在我手尖 那過往是我觸摸不到的流年 你言少,致于沒有爭吵 可你還是沒告別就離去 ...
    李譯閱讀 1,031評論 0 4
  • 20170611測試 召開會議
    易正然閱讀 408評論 0 0