我有一个 NSLayoutManager、两个 NSTextContainer 和一个 NSTextStorage 对象。
我将字符串一个接一个地添加到 textStorage 对象,直到第一个 textContainer 已满,然后我使用添加到该 textContainer 的文本量在我的图书应用程序中绘制一个页面。
99% 的情况下,didCompleteLayoutForTextContainer 中的 isAtEnd 标志会告诉我第一个文本容器何时已满。
但是,在极少数情况下,如果我向 textStorage 添加一个字符串,它实际上会从第一个文本容器中删除文本!
例如,当第一个文本容器中包含此字符串时(并且几乎已满):
\n\n\n\n\n\nMexico \n\nBook Covers from Germany \n\n \n\n \n\n Book Covers from Germany Special Edition \n\nBook Covers from Denmark Sweden \n\nBook Covers from Japan \n\nBook Covers From Finland \n\nBook Covers From Greece
如果我将此字符串添加到 textStorage:
Spain \n\nBook Covers From Iceland \n\nBook Covers From Netherlands \n\nBook Covers from Norway
layoutManager 将从第一个 textContainer 中移动单词“Greece”并将其移动到第二个 textContainer。
在我尝试添加新字符串并让它执行这种意外行为之前,我宁愿让 layoutManager 告诉我第一个 textContainer 已满。
谁能告诉我为什么会这样?或者告诉我如何判断这种情况何时会再次发生,以便我可以确定第一个 textContainer 何时真正满了?
谢谢!