2016-01-05 29 views
0

我有一个NSLayoutManager,两个NSTextContainers和一个NSTextStorage对象。NSLayoutManager行为?

我一个字符串添加一个到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何时完全满了?

谢谢!

回答

0

可能是创建子类NSTypesetter和覆盖的方法layoutParagraphAtPoint()。此方法返回将在nexy段落开始处的下一个字符,或者可能在textContainer的末尾 - 我不确定。