将* simple * ASCII字符串附加到NSScrollView

时间:2014-04-04 03:33:36

标签: objective-c appkit

是否有简单的方法将字符串附加到NSScrollView的NSTextView?我不想要属性。我只是以NSString的形式出现错误消息,我希望将每个消息附加到窗口。没有什么花哨。如果我有太多的啤酒并且决定超越顶级花哨,那么CR,LF以及TAB之外没有格式化。

我通过类文档跟踪的每条路径似乎都会导致自我引用的黑洞......就像NSMutableAttributedStrings ...它们不是真正的NSStrings,甚至没有cString方法。

我一直在考虑保留自己的NSString,并在以简单的方式附加errorstring之后完成重写滚动视图的内容。但这似乎......效率低......当报告数量变得非常大时。

1 个答案:

答案 0 :(得分:1)

每个字符串都需要将一些属性绘制到屏幕上 - 字体/大小/颜色至少是强制性的。

从文档来看并不完全明显,但操纵NSTextView的“正确”方法是直接操纵NSTextStorage。此外,NSTextStorageNSMutableAttributedString的子类。

您可以在不处理属性的情况下为字符串添加字符,只需将字符串中的属性复制到您添加文本的位置:

[textView.textStorage replaceCharactersInRange:NSMakeRange(textView.textStorage.length, 0) withString:@"\nhello world"];

您可能还想向下滚动:

[textView scrollRangeToVisible:NSMakeRange(textView.storage.length, 0)];

性能良好,甚至高达千兆字节的数据。 NSTextView非常高效,特别是在对内容进行少量更改时。