2010-07-07 19 views
30

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, eine Autocomplete-Funktion in einem UITextField für bestimmte Werte zu implementieren.UITextField Autocomplete - iPhone SDK

Ich weiß, dass die UITextField kann dies mit dem iPhone-Wörterbuch tun (ähnlich wie Google in Safari suchen, usw.), aber ich möchte in der Lage sein, es programmatisch zu bestimmten Werten, die ich angeben.

Kennt jemand eine Möglichkeit, dies zu tun?

Vielen Dank, Brett

+0

Sie können unter diesem Link einen Blick auch: http: // Stackoverflow. com/questions/14384638/autocomplete-uitextfield/27760471 # 27760471 – NeverHopeless

Antwort

7

Check out this tutorial von Ray Wenderlich, die beschreibt eine Methode zur automatischen Vervollständigung benutzerdefinierte

+1

Beachten Sie, dass Link-Only-Antworten entmutigt werden, SO-Antworten sollten der Endpunkt einer Suche nach einer Lösung sein (im Gegensatz zu einem anderen Zwischenstopp von Referenzen, die dazu neigen, zu bekommen im Laufe der Zeit abgestanden). Bitte beachten Sie, dass Sie hier eine eigenständige Zusammenfassung hinzufügen und den Link als Referenz beibehalten. –

+0

Dies ist nicht wirklich eine automatische Vervollständigung, sondern eine Suche Tutorial ... –

+0

Dieses Tutorial funktioniert. Sehen Sie sich einfach 'UITextView' vs.' UITextField' an. Der einzige Nachteil ist, dass aus irgendeinem Grund eine meiner Optionen zur automatischen Vervollständigung irgendwie verdeckt wird oder so. Wenn Sie es herausfinden, lassen Sie es mich wissen. – craned

1

Verwendung dieses Delegatmethode zu erreichen. Sie können die von Ihnen angegebenen Werte ersetzen.

- (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,

habe ich etwas sehr ähnlich wie diese, während auf einer aktuellen und ziemlich großen Projekt arbeiten. Wir hatten eine ständig wechselnde Liste von Autovervollständigungsbegriffen und erstellten eine Autovervollständigung um sie herum.

Zuerst möchten Sie eine Art von Auto-Vervollständigen-Controller machen. Es sollte eine Zeichenfolge enthalten und alle möglichen Autovervollständigungsbedingungen für diese Zeichenfolge zurückgeben.

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

Dann überprüfen Sie die UIMenuController-Klasse. Es ist die Klasse, die die Optionen zum Ausschneiden/Kopieren/Einfügen in vielen Anwendungen anzeigt. Sie können die freigegebene Instanz davon abrufen, die Menüelemente selbst ausfüllen und über dem Textfeld anzeigen. Der Benutzer kann dann einfach auf den gewünschten Begriff tippen.

Am Ende funktionierte die Lösung wirklich gut für unsere Bedürfnisse. Ich hoffe es funktioniert für dich.

6

Alternativ können Sie dieses UITextField Unterklasse verwenden (von DOAutocompleteTextField inspiriert):

https://github.com/hoteltonight/HTAutocompleteTextField

es ein paar mehr Features bekommen hat und wird aktiv entwickelt. Das Beispiel zeigt Ihnen, wie Sie ein Array als Datenquelle für den Autosuggest-Text verwenden. Es folgt dem gleichen Ansatz wie DOAutocompleteTextField. Es zeigt den vorgeschlagenen Vervollständigungstext "ghosted" im Textfeld an, wenn der Benutzer tippt.

1

Gerade mit diesem Thread konfrontiert, weil ich etwas ähnliches brauche. Wie über die Implementierung besitzen Sie mit der Methode des UITextFieldDelegate suchen:

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

Wie Sie wahrscheinlich diese Methode für jedes UITextField typing genannt wissen möchte.

2

Mit Hilfe des oben erwähnten Ray Wenderlich-Tutorials habe ich gerade eine Version von diesem implementiert, um Namen in einem existierenden UITableView zu filtern.

ich mein Textfeld der Stellvertretung als meine Ansicht-Controller, mein View-Controller als UITextFieldDelegate und implementiert diese beiden Methoden: