1

駁回UISearchDisplayController據我知道確切的情況下,積極UISearchDisplayController可以在兩個條件下予以辭退:如何檢測在自來水

  1. 當取消按鈕隨時點擊
  2. 當搜索文本框是空的,並且搜索欄下的灰色暗區域被點擊 。

我能夠通過searchBarCancelButtonClicked方法平凡地檢測案例1。至於案例2,似乎沒有任何代理方法可用於在點擊時立即通知

我實現所有的委託方法來研究的調用序列,發現了2的情況下,只有兩種方法被解僱:

點擊 - >willUnloadSearchResultsTableView - >searchDisplayControllerDidEndSearch

然而,這兩個事件只有在輕拍延遲後纔會觸發,而不是直接觸擊事件(後者是我真正需要的)。

爲了完整起見,下面是事件序列對於情況1:

searchBarCancelButtonClicked - >willHideSearchResultsTableView - >didHideSearchResultsTableView - >willUnloadSearchResultsTableView - >searchDisplayControllerDidEndSearch

任何想法?

對此的回答這個question建議使用searchDisplayControllerDidEndSearch,但對我來說太遲了。對於好奇,我打算做的是立即在搜索取消時將搜索文本值重置爲先前的值。在willUnloadSearchResultsTableViewsearchDisplayControllerDidEndSearch中實施此邏輯時,僅在延遲後設置文本時,會在搜索欄中導致相當不雅觀的閃爍。

謝謝!

回答