2009-09-21 11 views

risposta

8

Questo è in realtà un po 'complicato. Per ogni "token" è necessario creare un numero personalizzato NSTextAttachment e inserirlo nello NSTextStorage per il numero NSTextView.

C'è un great post by David Sinclair at Dejal Systems che spiega come farlo.

+0

Grazie amico. Non sapevo da dove cominciare a cercarlo. È un grande inizio. – goo

+0

Wow, l'articolo è stato scritto fino al 2007 ... Si applica alla più recente implementazione di TextKit per iOS 7 di TextView? – fatuhoku

+0

L'articolo è stato scritto per MacOS. Quali sono le ultime su iOS? – fatuhoku

4

ho capito un approccio semplice che utilizza una classe di cellule personalizzate per i token:

  1. scrivere una classe di cellule che eredita NSTextAttachmentCell e reimplementare
    - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
    che sarà la classe che rappresenta i gettoni nella vostra NSTextView.
  2. Per inserire un gettone attenersi alla seguente procedura:
    1. creare un'istanza di NSTextAttachment
    2. Impostare la cella del attaccamento a un'istanza della classe cellule token.
    3. Creare una stringa attribuita con tale allegato.
    4. Inserire la stringa attribuita nella visualizzazione testo.

Un metodo che inserisce un gettone nella visualizzazione del testo potrebbe essere simile a questo:

- (void)insertAttachmentCell:(NSTextAttachmentCell *)cell toTextView:(NSTextView *)textView 
{ 
    NSTextAttachment *attachment = [NSTextAttachment new]; 
    [attachment setAttachmentCell:cell]; 
    [textView insertText:[NSAttributedString attributedStringWithAttachment:attachment]]; 
} 

Questo approccio è più appropriato per i token di quella di David Sinclair. Non è necessario utilizzare i wrapper di file poiché desideriamo visualizzare contenuti dinamici (token) piuttosto che immagini statiche.
Tuttavia, uno sguardo ai concetti di David potrebbe essere utile. Descrive un buon approccio per implementare il drag and drop resp. funzionalità di copia-incolla.

+2

Che ne dici di iOS, dove non esiste una classe NSTextAttachmentCell? – fatuhoku