在NSTextView中替换NSTextStorage的正确方法?

时间:2013-03-20 15:05:49

标签: cocoa nstextview subclassing nstextstorage

我正在制作一些文字查看器应用程序。目前我需要非常频繁和精确的线路处理能力,所以我想要继承NSTextStorage类。但我找不到任何方法来设置新的文本存储到NSTextView。我能找到的唯一方法是

-[NSLayoutManager replaceTextStorage:]

方法。但令人困惑的是,这是我正在寻找的。因为它似乎只是替换了链接的NSLayoutManagers的文本存储而不是NSTextView。

我还考虑过继承NSTextView并重写-textStorage方法,但是如果该类不是为子类设计的,那么它将产生未定义的结果。

有人试图在NSTextView上使用自定义NSTextStorage吗?我怎样才能做到这一点?或者这是否被设计禁止?

1 个答案:

答案 0 :(得分:11)

您可以执行以下操作来更改NSTextView的存储空间:

NSTextStorage *newStorage = [[NSTextStorage alloc] initWithString: @"test"];

[aTextView.layoutManager replaceTextStorage: newStorage];

由于NSTextStorage是NSMutableAttributedString的子类,因此您可以使用所有相同的方法对其进行操作。