据我所知,UISearchDisplayController
可以在两种情况下解雇活动:
- 随时单击取消按钮时
- 当搜索文本字段为空并且点击搜索栏下方的灰色变暗区域时。
我能够通过该searchBarCancelButtonClicked
方法轻松检测到案例 1。至于案例 2,似乎没有任何委托方法可以用来在点击时立即获得通知。
我实现了所有的委托方法来研究调用的顺序,发现对于案例 2,只有两个方法被触发:
点击 --> willUnloadSearchResultsTableView
-->searchDisplayControllerDidEndSearch
但是,这两个事件仅在点击延迟后触发,而不是在立即点击事件时触发(后者是我真正需要的)。
为了完整起见,以下是案例 1 的一系列事件:
searchBarCancelButtonClicked
--> willHideSearchResultsTableView
--> didHideSearchResultsTableView
--> willUnloadSearchResultsTableView
-->searchDisplayControllerDidEndSearch
有任何想法吗?
This answer to this question建议使用searchDisplayControllerDidEndSearch
,但对我来说为时已晚。出于好奇,我打算在取消搜索时立即将搜索文本值重置为以前的值。当文本仅在延迟后设置时,在搜索栏中实施此逻辑willUnloadSearchResultsTableView
或会导致搜索栏中相当难看的闪烁。searchDisplayControllerDidEndSearch
谢谢!