2012-09-16 5 views
16

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?

+0

possibile duplicato di [Mostra automaticamente il cursore di testo in UISearchBar] (http://stackoverflow.com/questions/7441839/automatically-show-text-cursor-in-uisearchbar) – Pascal

+0

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

+0

Oh capisco, questo ha senso. Dovresti mettere queste informazioni nella domanda allora. ;) – Pascal

risposta

1

Sì, è sufficiente effettuare una chiamata implicita allo searchBarSearchButtonClicked: sul numero UISearchbarDelegate. Dai uno sguardo allo official doc per maggiori informazioni su questo delegato.

+0

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

+1

Ma da qualche parte nel tuo codice dovresti avere una classe di delegati per gestire la ricerca - no? – tiguero

+0

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

5

Basta avere il campo di input di ricerca diventare il primo soccorritore:

[self.searchInputField becomeFirstResponder]; 
+0

Grazie per la risposta, qual è il sé in questo contesto? – nja

+0

la barra di ricerca :-) – tiguero

+0

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

14

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"; 
+0

Questo funziona magnificamente e ha risolto una serie di altri problemi che stavo avendo, come certi metodi delegati non attivati. Grazie. – inwit

+0

Vale la pena notare che l'ordine conta :) –

0

sembra stupido, ma funziona, quindi non è muto;)

NSString * forceReload = self.searchDisplayController.searchBar.text; 
self.searchDisplayController.searchBar.text = forceReload; 
0

È 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.