2013-02-15 155 views
8

我已經實現了搜索欄,顯示取消按鈕,一旦用戶有搜索欄焦點。爲此,我在我的searchBarTextDidBeginEditing方法中寫了searchBar.showsCancelButton = YES;。在searchBarSearchButtonClicked中,我辭去了鍵盤,以便用戶可以查看完整的tableview。UISearchBar取消按鈕沒有響應

問題:此時搜索欄取消按鈕沒有響應。它只有在搜索欄重新獲得焦點時纔會響應。這是搜索欄取消按鈕的默認屬性還是我缺少我的代碼中的東西。我想要使​​用取消按鈕,而不必再次在搜索欄中輸入焦點。

+1

你怎麼辭職firstresponder上serachbar的文本框按照這個答案? – 2013-02-15 07:48:47

+0

你檢查了我的答案嗎? – Rajneesh071 2013-04-15 07:39:23

+0

它的真實......無論是否設計,它應該工作,如果它存在。 – Morkrom 2014-10-07 18:29:46

回答

4

這是搜索欄取消按鈕的默認行爲。如果您需要其他功能,則可以取消選中搜索欄的cancelbutton屬性,並可以使用UIButton作爲取消按鈕。

+1

謝謝!我會嘗試實現我自己的取消按鈕 – JiteshW 2013-02-15 10:24:23

3

我認爲它的默認行爲是UISearchBar,當它獲得焦點然後只有取消按鈕將被啓用。當沒有焦點時,您無法取得UISearchBar的取消按鈕事件。

所以我suggession實現你的任務是,

  • 創建一個工具欄
  • 插入UIBarButtonItem自定義視圖UISearchBar
  • 插入UIBarButtonItem命名爲 「取消」,用實際行動
4

是的,你可以讓你的UISearchBar取消按鈕響應。 默認情況下它是禁用的,但您可以訪問它的子視圖,然後設置啓用取消按鈕。

for (id object in [mySearchBar subviews]) 
{ 
    if ([object isKindOfClass:[UIButton class]]) 
    { 
     UIButton *searchBarCancelBtn = (UIButton*)object; 
     [searchBarCancelBtn setEnabled:YES]; 
    } 
} 

,如果你想一些其他的邏輯Custom clear button in UISearchBar text field