如何将令牌(如NSTokenField
)添加到 a NStextView
?
问问题
2855 次
2 回答
11
这实际上有点复杂。您将需要NSTextAttachment
为每个“令牌”创建一个自定义并将其插入到NSTextStorage
您的NSTextView
.
Dejal Systems 的 David Sinclair有一篇很棒的文章解释了如何做到这一点。
于 2009-09-21T22:07:32.790 回答
4
我想出了一个简单的方法,它使用自定义单元类作为标记:
- 编写一个继承
NSTextAttachmentCell
和重新实现的单元类,
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
这将是代表你的标记的类NSTextView
。 - 要插入令牌,请按照下列步骤操作:
- 创建一个实例
NSTextAttachment
- 将附件的单元格设置为令牌单元格类的实例。
- 使用该附件创建一个属性字符串。
- 将属性字符串插入到文本视图中。
- 创建一个实例
将标记插入文本视图的方法可能如下所示:
- (void)insertAttachmentCell:(NSTextAttachmentCell *)cell toTextView:(NSTextView *)textView
{
NSTextAttachment *attachment = [NSTextAttachment new];
[attachment setAttachmentCell:cell];
[textView insertText:[NSAttributedString attributedStringWithAttachment:attachment]];
}
这种方法比David Sinclair的方法更适合令牌。不需要使用文件包装器,因为我们想要显示动态内容(令牌)而不是静态图像。
不过,看看大卫的概念可能会很有用。他描述了实现拖放响应的好方法。复制粘贴功能。
于 2013-03-10T09:32:51.607 回答