Come posso forzare UISearchBar ad avviare automaticamente una nuova ricerca (come premere il pulsante Cerca)? C'è un modo semplice per raggiungere questo obiettivo?Come posso forzare a livello di codice una ricerca in UISearchBar?
risposta
Sì, è sufficiente effettuare una chiamata implicita allo searchBarSearchButtonClicked:
sul numero UISearchbarDelegate
. Dai uno sguardo allo official doc per maggiori informazioni su questo delegato.
Grazie per la risposta, abbiamo il problema che la barra di ricerca è incorporata in una vista a cui non abbiamo accesso e quindi questo approccio non funziona. Hai qualche altro suggerimento? – nja
Ma da qualche parte nel tuo codice dovresti avere una classe di delegati per gestire la ricerca - no? – tiguero
Non abbiamo accesso a quella parte del codice poiché è implementata in una libreria che usiamo dove non abbiamo accesso al codice sorgente. Stiamo cercando di trovare il delegato che è utilizzato lì, ma non abbiamo avuto successo finora. – nja
Basta avere il campo di input di ricerca diventare il primo soccorritore:
[self.searchInputField becomeFirstResponder];
Grazie per la risposta, qual è il sé in questo contesto? – nja
la barra di ricerca :-) – tiguero
Come ho capito come possiamo accedere al campo di testo della barra di ricerca, questo diventaFirstResponder sta solo visualizzando la tastiera ma vogliamo avviare automaticamente una ricerca – nja
ho scoperto che avevo bisogno di impostare l'UISearchViewController per attivare prima di modificare il valore del campo di ricerca programmaticamente per rendere UISearchViewController eseguire automaticamente la ricerca:
// Need to set the searchDisplayController to active to
// make the changes in search text trigger a search.
self.searchDisplayController.active = YES;
self.searchDisplayController.searchBar.text = @"New search string";
Questo funziona magnificamente e ha risolto una serie di altri problemi che stavo avendo, come certi metodi delegati non attivati. Grazie. – inwit
Vale la pena notare che l'ordine conta :) –
sembra stupido, ma funziona, quindi non è muto;)
NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;
È possibile forzare la vostra barra di ricerca,
Objective C:
[self searchBar:yourSearchBarName textDidChange: yourSearchingString];
Swift 3.0:
self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)
In tal modo, la vostra barra di ricerca.
possibile duplicato di [Mostra automaticamente il cursore di testo in UISearchBar] (http://stackoverflow.com/questions/7441839/automatically-show-text-cursor-in-uisearchbar) – Pascal
Nessun duplicato in quanto non vogliamo mostrare il tastiera, vogliamo avviare il processo di ricerca come è fatto quando si fa clic sul pulsante di ricerca. Il problema è che la logica è in una libreria dove non abbiamo accesso (nessun codice sorgente) – nja
Oh capisco, questo ha senso. Dovresti mettere queste informazioni nella domanda allora. ;) – Pascal