如何将NSTokenField
等令牌添加到NStextView
?
答案 0 :(得分:10)
这实际上有点复杂。您需要为每个“令牌”创建一个自定义NSTextAttachment
,并将其插入NSTextStorage
的{{1}}。
答案 1 :(得分: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更适合令牌。没有必要使用文件包装器,因为我们想要显示动态内容(令牌)而不是静态图像。
看看David的概念可能会有用。他描述了一种实现拖放操作的好方法。复制粘贴功能。