2012-06-27 14 views
7

Ich mag würde in Zahlen ein Textfeld wie das Ausdruckseditor Textfeld haben:Token Textfeld wie in Numbers

enter image description here

Es ist sehr ähnlich zu NSTokenField, aber NSTokenField unterstützt nur ein Trennzeichen getrennte Liste Tokens, wie das Feld "An:" in Mail.app.

enter image description here

Ich habe diese Token in den Text an bestimmten Stellen einzubetten, aber sonst sie genau haben arbeiten wie NSTokenField (Backspace ein Token löscht, können Sie sie um usw. ziehen).

Gibt es eine Steuerung der 1. oder 3. Partei, die so etwas tut? Ich habe nichts gefunden.

Wenn nicht, wie würden Sie die Implementierung empfehlen? Verwenden Sie Core Text und erfinden Sie das Rad neu (implementieren Sie NSTextField mit besserer Token-Unterstützung)? Oder gibt es eine bessere Lösung?

Antwort

5

Ich glaube nicht, dass es eine alternative Kontrolle für NSTokenField gibt (gut, ich konnte auch vor ein paar Wochen keine finden).

Eine mögliche Option könnte darin bestehen, der im Apple-Beispielprojekt LayoutManagerDemo vorgestellten Lösung zu folgen. Dies zeigt eine Unterklasse von NSTextView, die Mausbewegung über den Text erkennen kann. Installieren und starten Sie die Demo, um die Grundidee zu erhalten.

Das Beispiel verwendet NSLayoutManager, um die Mausbewegung zu erkennen. Der Code könnte jedoch möglicherweise angepasst werden, um bestimmte Zeichenfolgen im Text zu erkennen, wie die Token in Ihrem Textfeld. Sobald Sie die Token und ihren Standort von NSLocationManager haben, können Sie eine eigene Repräsentation basierend auf den Eigenschaften Ihres Tokens einfügen. Eine mögliche Lösung könnte sein, NSTextAttachmentCell zu verwenden, die in Ihrem Text eine Glyphe werden wird. Der Vorteil der Verwendung von NSTextAttachmentCell ist, dass es von Cocoas Textsystem als Glyphe behandelt wird (Sie können es auswählen, es folgt der Formatierung usw.). Indem Sie drawWithFrame:inView: implementieren, können Sie die verschiedenen sichtbaren Attribute jedes Tokens hinzufügen.