2009-09-21 54 views

回答

8

這實際上有點複雜。您將需要爲每個「令牌」創建一個自定義NSTextAttachment,並將其插入到NSTextStorage中以供您的NSTextView使用。

有一個great post by David Sinclair at Dejal Systems解釋如何做到這一點。

+0

謝謝你。我不知道從哪裏開始尋找它。這是一個很好的開始。 – goo 2009-09-21 22:24:29

+0

哇,這篇文章是在2007年一直寫的...它是否適用於TextView的較新iOS 7 TextKit實現? – fatuhoku 2014-06-24 10:26:16

+0

該文章是爲MacOS編寫的。 iOS上最新的內容是什麼? – fatuhoku 2014-06-24 10:28:46

4

我想通了,使用的令牌的自定義單元格類的簡單的方法:

  1. 寫繼承NSTextAttachmentCell細胞類並重新實現
    - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
    這將是代表你的NSTextView令牌類。
  2. 要插入一個令牌請按照下列步驟操作:
    1. 創建的NSTextAttachment
    2. 將附着的細胞的情況下,以自己的權杖細胞類的一個實例。
    3. 使用該附件創建一個屬性字符串。
    4. 將屬性字符串插入文本視圖。

該插入令牌插入文本視圖可能是這樣的一種方法:

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

該方法更適合於令牌比一個由David Sinclair。由於我們想要顯示動態內容(令牌)而不是靜態圖像,因此不需要使用文件包裝。
但是,大衛的概念看起來可能很有用。他描繪了一個實現拖放操作的好方法。複製粘貼功能。

+2

在iOS上,沒有NSTextAttachmentCell類的情況如何? – fatuhoku 2014-06-24 10:29:20