iphone - search bar swift 4 example
No se llama al método delegado searchBarCancelButtonClicked. ¿Hay alguna manera de llamar? (7)
Asegúrese de que su UIViewController esté configurado como el delegado de su UISearchBar y que adopte el protocolo UISearchBarDelegate.
UIViewController para implementar una vista para colocar una UITableView UISearchBar y se está implementando. Pero no puedes llamar a searchBarCancelButtonClicked. No sé cuál es la razón.
En mi caso fue un usuario no controladoInteractionEnabled = NO
Esta línea elimina la vista transparente de UISearchController
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
La razón por la que searchBarCancelButtonClicked no se activa puede ser porque su UISearchBar no muestra el botón Cancelar. Puede mostrar el botón Cancelar de esta manera:
searchBar.showsCancelButton = true
Tuve el mismo problema y hacer que el botón Cancelar hiciera que searchBarCancelButtonClicked se disparara como se esperaba.
Me encontré con el mismo problema cuando tenía una barra UISearch dentro de un UIScrollView. Según entiendo la pregunta, la tenía dentro de un UITableView, que es una subclase de UIScrollView.
Lo que ayudó en mi caso fue establecer.
tableView.delaysContentTouches = NO;
Parece que el método searchBarCancelButtonClicked
no funciona bien con ese conjunto en YES
, que es la configuración predeterminada.
searchController.searchBar.delegate = self
, no solo searchController.delegate = self
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
// This method has been called when u enter some text on search or Cancel the search.
// so make some condition for example:
if([searchText isEqualToString:@""] || searchText==nil) {
// Nothing to search, empty result.
searching = NO;
[mytableView reloadData];
}
}
Espero eso ayude.