我有一个NSTextView支持我自己组装的文本系统,沿着Cocoa文档中Text System Overview中的“手工组装文本系统”部分。它成功地在屏幕上显示NSTextStorage的内容。
但是当我输入它时,似乎没有任何事情发生 - 屏幕上的文字不会改变。如果我选择文本,则选择的形状表明文本已更改。如果我将文本复制并粘贴到TextEdit中,我甚至可以看到我的编辑内容。如果我填写的足够,我可以让它抛出异常:
NSRunStorage, _NSBlockNumberForIndex(): index (5897) beyond array bounds (5881)
Golly,这看起来像是我可以花一天时间调试的好东西。这是怎么回事?
答案 0 :(得分:1)
确保您将NSTextStorage连接到NSLayoutManager,如下所示:
[textStorage addLayoutManager:layoutManager];
而不是这样:
[layoutManager setTextStorage:textStorage]; //BAD
-[NSLayoutManager setTextStorage:]
上的文档说它永远不应该被直接调用,只能被覆盖。显然这就是原因。希望我为你节省了数小时无效的工作!