对NSTextView的更改未到达屏幕

时间:2010-11-16 02:40:01

标签: cocoa nstextview nslayoutmanager nstextstorage

我有一个NSTextView支持我自己组装的文本系统,沿着Cocoa文档中Text System Overview中的“手工组装文本系统”部分。它成功地在屏幕上显示NSTextStorage的内容。

但是当我输入它时,似乎没有任何事情发生 - 屏幕上的文字不会改变。如果我选择文本,则选择的形状表明文本已更改。如果我将文本复制并粘贴到TextEdit中,我甚至可以看到我的编辑内容。如果我填写的足够,我可以让它抛出异常:

NSRunStorage, _NSBlockNumberForIndex(): index (5897) beyond array bounds (5881)

Golly,这看起来像是我可以花一天时间调试的好东西。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

确保您将NSTextStorage连接到NSLayoutManager,如下所示:

[textStorage addLayoutManager:layoutManager];

而不是这样:

[layoutManager setTextStorage:textStorage];   //BAD

-[NSLayoutManager setTextStorage:]上的文档说它永远不应该被直接调用,只能被覆盖。显然这就是原因。希望我为你节省了数小时无效的工作!