繁体   English   中英

带令牌的NSTextView

[英]NSTextView with tokens

如何将标记(如NSTokenField添加到NStextView

这实际上有点复杂。 您需要为每个“令牌”创建一个自定义NSTextAttachment ,并将其插入NSTextStorage以用于您的NSTextView

Dejal Systems的David Sinclair发表了一篇很棒的文章 ,解释了如何做到这一点。

我想出了一个简单的方法,它使用自定义单元格类来标记:

  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的方法更适合于令牌。 因为我们想要显示动态内容(令牌)而不是静态图像,所以不需要使用文件包装器。
看看大卫的概念可能会有用。 他描述了一种实现拖放操作的好方法。 复制粘贴功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM