2009-09-21 2 views

Odpowiedz

8

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ć.

+0

Dzięki człowieku. Nie wiedziałem, gdzie zacząć go szukać. To świetny początek. – goo

+0

Wow, artykuł został napisany w 2007 roku ... Czy ma on zastosowanie do nowszej wersji aplikacji Text Text do TextView? – fatuhoku

+0

Artykuł został napisany dla systemu MacOS. Co nowego w systemie iOS? – fatuhoku

4

zorientowali się łatwe podejście, które wykorzystuje niestandardową klasę komórek za tokeny:

  1. 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 swojej NSTextView.
  2. Aby wstawić token wykonaj następujące kroki:
    1. Utwórz instancję NSTextAttachment
    2. Ustaw komórkę przywiązania do instancji klasy token komórek.
    3. Utwórz przypisany ciąg z tym załącznikiem.
    4. Włóż przypisany ciąg do widoku tekstowego.

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.

+2

Co powiesz na iOS, gdzie nie ma klasy NSTextAttachmentCell? – fatuhoku