2009-12-12 60 views
0

有什麼辦法來當收到一個UISearchBar完成通知(例如取消按鈕,點擊或以其他方式失去焦點。如何獲取UISearchBar隱藏通知?

我們沒有進入的UITextField裏面,我也可以觀測附加到它。

我可以通知當keyboardWillHide,但我有另一個文本字段,所以它可以是一個,而且它的鍵盤皮之前處於非活動狀態,所以沒有愛。

我有機會獲得UISearchBarDelegate和UISearchDisplayController(Delegate)。

誰能告訴我在哪裏看?是否有可供選擇的所有通知的主列表?

回答

1

這些方法應該爲你做它:

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;  // called when text ends editing 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;  // called when keyboard search button pressed 
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar; // called when bookmark button pressed 
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar; // called when cancel button pressed 

這些都是UISearchBarDelegate委託方法。通過規則,委託方法比添加通知觀察者更加緊密。斯坦福大學的iPhone視頻中提到了這一點。雖然我自己使用通知慷慨,並沒有發現他們的問題。

+0

searchBarCancelButtonClicked適用於其中一種情況,但在我的應用中最常用的情況是用戶點擊搜索欄和鍵盤之間的空白區域,這會使searchDisplay消失。沒有委託方法被調用。 – kbanman 2009-12-13 04:40:36

+0

您可以在搜索欄和鍵盤之間放置一個空間大小的按鈕,並使其僅在出現鍵盤時顯示,並在單擊該空間時再次將其刪除。你可以像[self addSubview:button];當鍵盤出現時或者當搜索欄開始編輯以及單擊該空間時,用戶將基本上點擊一個不可見的按鈕,並且您可以通過resignFirstResponder關閉鍵盤並從視圖中移除該按鈕。 – 2009-12-13 13:34:10

0

一般情況下,如果Apple文檔中沒有「通知」部分的類,則沒有可以公開提供給該類的通知。

我會用中坦的使用委託的建議。