2015-01-02 9 views
5

Mi chiedevo se fosse possibile attivare un UISearchDisplayController da un pulsante nella barra di spostamento piuttosto che dalla barra di ricerca standard che si ottiene quando si estrae il Search Bar Controller da lì oggetto libreria in Xcode. Ti piace questa funzionalità in app calendario:UISearchDisplayController da un pulsante non è il campo di ricerca predefinito

UISearchDisplayController in the Calendar app È possibile ottenere un pulsante per sparare un'azione in questo modo:

[self.searchDisplayController setActive:YES animated:YES]; 

ma è ancora necessario la barra di ricerca ed anima da dove la barra di ricerca è. Idealmente mi piacerebbe che arrivasse dall'alto come nella gif.

Qualsiasi aiuto molto apprezzato. David.

+0

Basta creare una barra di ricerca. Imposta la cornice da disattivare a schermo al caricamento. Assicurati che abbia una proprietà di presa. Animalo quando fai clic sul pulsante e crea il primoResponder – soulshined

risposta

7

vecchia questione, ma io ho una risposta così ho pensato che valeva la pena rivisitare ...

Alla fine ho usato UISearchController piuttosto che UISearchDisplayController.

Se si desidera attivare la ricerca, ma non si vuole una barra di ricerca, tutto quello che dovete fare è attivare la ricerca utilizzando

self.searchController.active = YES; 

e poi perché non v'è alcuna barra di ricerca è necessario implementare the presentSearchController: metodi del protocollo UISearchControllerDelegate.

- (void)presentSearchController:(UISearchController *)searchController { 
    [self.window.rootViewController presentViewController:self.searchController animated:YES completion:nil]; 
} 

non abbastanza hanno la stessa animazione, ma sono sicuro che con la solita vista del regolatore animazione api che posso ottenere qualcosa di lavoro simile.

+0

Grazie per la risposta utile. Si verifica anche il problema che la tastiera non viene visualizzata automaticamente? Ho provato a chiamare 'self.searchController.searchBar becomeFirstResponder' in vari luoghi ma funziona solo dopo che l'animazione di presentazione è stata completata. Quindi la barra di ricerca viene prima inserita, quindi la tastiera viene inserita. Ma voglio che si animino tutto in una volta. Per qualsiasi ragione, 'searchBar.canBecomeFirstResponder' è sempre' NO' prima che l'animazione di presentazione sia completata. Qualche idea? –

+0

Per farlo funzionare come nell'app Calendario, ho presentato il controller di ricerca dallo stesso controller di visualizzazione che lo possiede (cioè 'self' invece di' self.window.rootViewController'), e ho anche impostato 'searchController.hidesNavigationBarDuringPresentation = false 'e' searchController.searchBar.searchBarStyle = .prominent'. – maxkonovalov

Problemi correlati