5

Estoy trabajando en un proyecto de iOS donde deseo implementar una funcionalidad de búsqueda. Estoy usando UISearchBar y UISearchDisplayController y me gustaría hacer UISearchBar oculto implícitamente. Cuando el usuario toca el UIBarButtonItem, aparecerá la barra de búsqueda y "becomeFirstResponder", mientras que cuando el usuario haga clic en el botón Cancel en la barra de búsqueda, desaparecerá.Cómo detectar el toque en el fondo gris (atenuado) en UISearchDisplayController

La aparición está funcionando correctamente, pero tengo un problema para desaparecer. Logré ocultar la barra de búsqueda cuando el usuario toca el botón Cancel (método searchBarCancelButtonClicked), pero no puedo ocultar la barra de búsqueda cuando se toca el fondo gris (atenuado) en UISearchDisplayController. Hasta donde yo sé, no hay un método para detectar este evento, por lo que es necesario aplicar algún truco. ¿Conoces alguno o cuál es la mejor manera de detectar el tapping en el fondo gris?

Respuesta

5

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

+0

¡Usted señor es un genio! – pechar

0

UISearchDisplayController por lo general consiste en un UISegmentedControl, el UIResultsTable y el teclado. La tabla de resultados es donde desea detectar este toque para descartar. Una vez conocido esto, tal vez pueda agregar un UIButton transparente a esa vista que descarta el primer respondedor, o ¿Tal vez puede agregar un UIGestureRecognizer en una vista transparente que logre el mismo efecto? Solo pensando en la parte superior y no lo he probado yo mismo, si funciona para ti estoy contento!

+0

Creo que UIResultsTable no es lo que estoy buscando. La tabla de resultados se muestra solo después de escribir en la barra de búsqueda. Antes de esto, no hay UITableView allí, solo un fondo gris. – zvonicek

Cuestiones relacionadas