Cómo detectar el toque en el background gris (atenuado) en UISearchDisplayController

Estoy trabajando en un proyecto iOS donde quiero implementar una funcionalidad de búsqueda. Estoy usando UISearchBar y UISearchDisplayController y me gustaría hacer que UISearchBar oculto implícitamente. Cuando el usuario toca el UIBarButtonItem , UIBarButtonItem la barra de búsqueda y "becomeFirstResponder", mientras que cuando el usuario click el button Cancel en la barra de búsqueda, debería desaparecer.

La aparición funciona correctamente, pero tengo un problema con la desaparición. searchBarCancelButtonClicked ocultar la barra de búsqueda cuando el usuario toca el button Cancel (método searchBarCancelButtonClicked ), pero no puedo ocultar la barra de búsqueda cuando se UISearchDisplayController background gris (atenuado) en UISearchDisplayController . Por lo que sé, no hay ningún método para detectar este evento, por lo que es necesario aplicar un poco de piratería. ¿Conoces alguna, o cuál es la mejor manera de detectar el tapping en el background gris?

Así que finalmente lo resolví. Además del searchBarCancelButtonClicked:(UISearchBar *)searchBar , también es necesario ocultar la barra de búsqueda en el searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller . Parece que se llama a este callback incluso cuando se toca el background gris (atenuado), por lo que se puede usar fácilmente para ocultar la barra de búsqueda.

UISearchDisplayController generalmente consiste en un UISegmentedControl, UIResultsTable y el keyboard. La tabla de resultados es donde desea detectar este toque para descartar. Con eso se sabe, tal vez puede agregar un button UIB transparente a esa vista que descarta el primer respondedor, o tal vez puede agregar un UIGestureRecognizer en una vista transparente que logra el mismo efecto? Solo pienso en la parte superior y no he probado esto yo mismo, si funciona, ¡me alegro!