2010-07-07 25 views
30

Sto cercando di capire se esiste un modo per implementare una funzionalità di completamento automatico in un UITextField per valori specifici.UITextField Autocomplete - iPhone SDK

So che lo UITextField può farlo utilizzando il dizionario dell'iPhone (molto simile alla ricerca di google in safari, ecc.), Ma voglio essere in grado di programmarlo in modo corretto per determinati valori specificati.

Qualcuno sa di qualsiasi modo per fare questo?

Molte grazie, Brett

+0

Si può avere uno sguardo a questo link così: http: // StackOverflow. it/questions/14384638/autocomplete-uitextfield/27760471 # 27760471 – NeverHopeless

risposta

7

Partenza this tutorial da Ray Wenderlich che dimostra un modo per ottenere il completamento automatico personalizzato

+1

Si noti che le risposte di solo collegamento sono scoraggiate, pertanto le risposte dovrebbero essere il punto finale di una ricerca di una soluzione (rispetto a un'altra sosta di riferimenti, che tendono ad essere stantio nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. –

+0

Questo non è un completamento automatico ma un'esercitazione di ricerca ... –

+0

Questo tutorial funziona. Osserva il tuo 'UITextView' contro' UITextField'. L'unica avvertenza è che per qualche ragione una delle mie opzioni di autocomplete è in qualche modo nascosta o qualcosa del genere. Se lo capisci, fammi sapere. – craned

1

uso questo metodo delegato. puoi sostituire i valori che hai specificato.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text 
     if ([string isEqualToString:@"StackO"]) { 
      [email protected]"StackOverflow"; 
     } 
    return YES; 
} 
12

Brett,

ho fatto qualcosa di molto simile a questo mentre si lavora su un progetto di recente e piuttosto grande. Abbiamo avuto un elenco in costante cambiamento di termini di completamento automatico e abbiamo creato un completamento automatico attorno a loro.

Prima di tutto, ti consigliamo di creare un tipo di controller con completamento automatico. Dovrebbe prendere una stringa e restituire tutti i termini di completamento automatico possibili per quella stringa.

-(NSArray *)completionsForString:(NSString *)myString; 

Quindi, controllare la classe UIMenuController. È la classe che mostra le opzioni taglia/copia/incolla in molte applicazioni. È possibile ottenere l'istanza condivisa, compilare le voci del menu e mostrarle sopra il campo di testo. L'utente può quindi semplicemente toccare il termine che desidera.

Alla fine, la soluzione ha funzionato molto bene per le nostre esigenze. Spero che funzioni per te.

6

In alternativa, è possibile utilizzare questa sottoclasse UITextField (ispirato DOAutocompleteTextField):

https://github.com/hoteltonight/HTAutocompleteTextField

Essa ha avuto un paio di caratteristiche ed è attivamente sviluppato. L'esempio mostra come utilizzare un array come origine dati per il testo automatico. Ha lo stesso approccio di DOAutocompleteTextField, in quanto mostra il testo di completamento suggerito "ghosted" nel campo di testo mentre l'utente digita.

1

Proprio di fronte a questo thread perché ho bisogno di qualcosa di simile. Che ne dite di attuazione si possiede ricerca con il metodo del UITextFieldDelegate:

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

Come si sarebbe probabilmente conoscete questo metodo viene chiamato per la digitazione di ogni UITextField.

2

Con l'aiuto del tutorial Ray Wenderlich, ho appena implementato una versione di questo per filtrare i nomi in uno esistente UITableView.

ho impostato delegato del mio campo di testo come il mio controller di vista, il mio controller della vista come un UITextFieldDelegate e implementato questi due metodi: