NSTextView mit Token
-
12-09-2019 - |
Frage
Wie kann ich Token, wie NSTokenField
, zu einem NStextView
?
Lösung
Dies ist eigentlich ein wenig kompliziert. Sie müssen eine benutzerdefinierte NSTextAttachment
für jedes „Token“ erstellen und sie in die NSTextStorage
für Ihre NSTextView
einfügen.
Es gibt einen Systeme die erklärt, wie es zu tun.
Andere Tipps
dachte ich einen einfachen Ansatz heraus, die eine benutzerdefinierte Zelle Klasse für Token verwendet:
- eine Zelle Klasse schreiben, die
NSTextAttachmentCell
erbt und
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
reimplementieren
Das wird die Klasse sein, die die Token in IhremNSTextView
darstellt. - So fügen Sie diese Schritte ein Token folgen:
- Erstellen Sie eine Instanz von
NSTextAttachment
- Stellen Sie die Zelle der Anlage zu einer Instanz der Token Zellklasse.
- Erstellen Sie einen zugeschrieben String mit diesem Anhang.
- Legen Sie die Zeichenfolge zugeschrieben in die Textansicht.
- Erstellen Sie eine Instanz von
Ein Verfahren, das ein Token in die Textansicht fügt könnte wie folgt aussehen:
- (void)insertAttachmentCell:(NSTextAttachmentCell *)cell toTextView:(NSTextView *)textView
{
NSTextAttachment *attachment = [NSTextAttachment new];
[attachment setAttachmentCell:cell];
[textView insertText:[NSAttributedString attributedStringWithAttachment:attachment]];
}
Dieser Ansatz ist besser geeignet für Token als die von David Sinclair . Es besteht keine Notwendigkeit Datei-Wrapper zu verwenden, da wir dynamische Inhalte (Token) als statische Bilder angezeigt werden sollen. Ein Blick auf Davids Konzepte
könnte allerdings nützlich sein. Er stellt einen guten Ansatz, um den Drag zu implementieren und bzw. fallen. Kopieren Paste-Funktionalitäten.