4
我希望能夠保存NSTextView的當前文本和可見區域並將其恢復。使用visibleRect和scrollRectToVisible:似乎會傳遞不一致的結果。如果我只是做:保存和恢復NSTextView的位置
- (void)restorePosition
{
NSRect r = [self.textView visibleRect];
[self.textView.layoutManager replaceTextStorage: self.textView.textStorage];
[self.textView scrollRectToVisible: r];
}
認爲會留在位置視圖時位於距頂部小於85線,但進一步下跌,我去了進一步的騰飛就越大。在從頂部200行結束時,它在277結束,在300結束於408等
沒有replaceTextStorage它如預期的那樣工作,但替換文本和查找以前的地方是整個點。有關替換文本的內容會導致線矩形計算變得不可靠。
很顯然,我打算從真實應用程序中保存的對象中獲取新的visibleRect和textStorage,但是這說明了最小代碼的問題。
任何想法?
我已經發現,使用'NSLayoutManager *的layoutManager = myTextView.layoutManager; NSRange glyphRange = [layoutManager glyphRangeForBoundingRect:[self.textView visibleRect] inTextContainer:self.textView.textContainer]; NSRange charRange = [layoutManager characterRangeForGlyphRange:glyphRange actualGlyphRange:&glyphRange];' 保存位置和'[myTextView scrollRangeToVisible:charRange];'幾乎可以恢復工作。它可以被一行關閉,但比scrollRectToVisible:do好得多。 – Matt 2013-04-12 16:10:36