0

我有一个由我自己组装的文本系统支持的 NSTextView,按照 Cocoa 文档中文本系统概述中的“手动组装文本系统”部分的内容。它成功地在屏幕上显示了 NSTextStorage 的内容。

但是当我输入它时,似乎什么也没有发生——屏幕上的文字没有改变。如果我选择文本,则选择的形状表明文本已更改。如果我将文本复制并粘贴到 TextEdit 中,我什至可以看到我的编辑。如果我输入足够多,我可以让它抛出异常:

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

天哪,这看起来像是我可以花大半天时间调试的东西。这里发生了什么?

4

1 回答 1

1

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

[textStorage addLayoutManager:layoutManager];

而不是这样:

[layoutManager setTextStorage:textStorage];   //BAD

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

于 2010-11-16T02:43:04.447 回答