2013-09-07 9 views
5

Was ist der einfachste Weg, um eine NSTextField mit einer "Empfehlungsliste" dynamisch darunter angezeigt, wie der Benutzer eingibt? Genau wie die Adressleiste von Safari, die ein Menü von einigen Arten hat (Ich bin ziemlich sicher, dass Safaris Adressleiste Vorschläge Menü ist, da es abgerundete Ecken, blaue Farbverlaufsauswahl und Hintergrundunschärfe hat).NSTextField mit automatischen Vorschlägen wie die Adressleiste von Safari?

Ich habe mit NSTextView's autocompletion facility versucht, aber fand es war unzureichend:

  • Es wird versucht Wörter zu vervollständigen anstelle der gesamten Textfelder - in anderen Worten, eine der automatischen Vervollständigung Vorschlag der Auswahl nur das aktuelle Wort ersetzen .
  • Die Autovervollständigungsliste wird nach vorne verschoben und an der Einfügemarke ausgerichtet, anstatt sie mit dem Textfeld auszurichten.

Sample autocomplete

In dem Beispiel-Screenshot oben, wenn ich den Vorschlag zum automatischen Vervollständigung nur das Textfeld K ausgewählt mit dem vorgeschlagenen Elemente in der Liste ersetzt, die in Abadi Abadi Kurniawan führt.

Diese sind, was ich erreichen möchte:

  • Jedes Mal, wenn ein Vorschlag ausgewählt wird, wird der gesamte Textfeld mit dem Vorschlag ersetzt.
  • Halten Sie die Vorschlagsliste an der linken Seite des Textfelds ausgerichtet.

Hinweis: Dies ist nicht eine Frage zu adding progress indicator behind a text field.

Antwort

2

Dies adressiert nur die Hälfte Ihrer Antwort, aber ich glaube, Sie müssen NSTextView Unterklasse - (NSRange)rangeForUserCompletion Methode, die Rückgabe der Bereich der gesamten Zeichenfolge im Textfeld. Dies sollte sicherstellen, dass das zuletzt eingegebene Wort nicht automatisch vervollständigt wird.

Wenn Sie ein benutzerdefiniertes Menü möchten, müssen Sie dies selbst tun, wahrscheinlich indem Sie die Methode -controlTextDidChange: implementieren und gegebenenfalls eine benutzerdefinierte Ansicht mit einer Tabelle anzeigen.