2016-01-05 31 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的末尾 - 我不確定。