2009-09-21 72 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