Jak mogę dodać tokeny, takie jak NSTokenField
, do NStextView
?NSTextView z tokenami
Odpowiedz
To jest trochę skomplikowane. Będziesz musiał utworzyć niestandardowy NSTextAttachment
dla każdego "tokena" i wstawić go do NSTextStorage
dla swojego NSTextView
.
Istnieje great post by David Sinclair at Dejal Systems, który wyjaśnia, jak to zrobić.
zorientowali się łatwe podejście, które wykorzystuje niestandardową klasę komórek za tokeny:
- napisać klasę komórek, która dziedziczy
NSTextAttachmentCell
i reimplement- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
Będzie to klasa, która reprezentuje znaki w swojejNSTextView
. - Aby wstawić token wykonaj następujące kroki:
- Utwórz instancję
NSTextAttachment
- Ustaw komórkę przywiązania do instancji klasy token komórek.
- Utwórz przypisany ciąg z tym załącznikiem.
- Włóż przypisany ciąg do widoku tekstowego.
- Utwórz instancję
Metoda, która wstawia znak do widoku tekstu może wyglądać następująco:
- (void)insertAttachmentCell:(NSTextAttachmentCell *)cell toTextView:(NSTextView *)textView
{
NSTextAttachment *attachment = [NSTextAttachment new];
[attachment setAttachmentCell:cell];
[textView insertText:[NSAttributedString attributedStringWithAttachment:attachment]];
}
Takie podejście jest bardziej odpowiednie dla tokenów niż jeden przez David Sinclair. Nie ma potrzeby używania wrapperów plików, ponieważ chcemy wyświetlać zawartość dynamiczną (tokeny) zamiast statycznych obrazów.
Spojrzenie na koncepcje Davida może być jednak przydatne. Przedstawia dobre podejście do implementacji przeciągania i upuszczania. Kopiuj funkcje wklejania.
Co powiesz na iOS, gdzie nie ma klasy NSTextAttachmentCell? – fatuhoku
Dzięki człowieku. Nie wiedziałem, gdzie zacząć go szukać. To świetny początek. – goo
Wow, artykuł został napisany w 2007 roku ... Czy ma on zastosowanie do nowszej wersji aplikacji Text Text do TextView? – fatuhoku
Artykuł został napisany dla systemu MacOS. Co nowego w systemie iOS? – fatuhoku