代码之家  ›  专栏  ›  技术社区  ›  Becca Royal-Gordon

对NSTextView的更改未到达屏幕

  •  0
  • Becca Royal-Gordon  · 技术社区  · 15 年前

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

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

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Becca Royal-Gordon    15 年前

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

    [textStorage addLayoutManager:layoutManager];
    

    而不是像这样:

    [layoutManager setTextStorage:textStorage];   //BAD
    

    关于 -[NSLayoutManager setTextStorage:] 说不应该直接调用它,而应该重写它。显然这就是原因。希望我能帮你省下一个又一个小时毫无结果的工作!

    推荐文章