UISearchBar 失去第一響應者之后的 Cancel 按鈕

背景

在項目中的一個搜索頁面,導航欄是 UISearchBar,搜索頁和結果頁都在當前 Controller 中顯示。

操作流程

  • 輸入文字點擊 Search 按鈕,或點擊頁面中的搜索歷史
  • 展示搜索結果,UISearchBar 失去第一響應者
  • 點擊 UISearchBar 的 Cancel 按鈕
  • 彈出鍵盤
  • 再次點擊 UISearchBar 的 Cancel 按鈕
  • 調用 delegate 方法:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

在這里,delegate 方法中需要 pop 頁面,而在展示搜索結果后,也就是 UISearchBar 失去第一響應者后,需要點擊兩次才能調用方法,不符合需求。

原因

因為在此時,Cancel 按鈕的 enabled 屬性被設置為 NO,如果想保持可以點擊,需要在搜索框失去焦點的地方設置其 enabled 為 YES。

解決辦法

//  設置取消按鈕為可用狀態(tài)
UIButton *cancelBtn = [self.searchBar valueForKey:@"cancelButton"]; 
cancelBtn.enabled = YES;

將這兩行代碼放置 UISearchBar 失去第一響應者之后即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容