4

NSTextView の現在のテキストと表示領域を保存して復元できるようにしたいと考えています。visibleRect と scrollRectToVisible: を使用すると、一貫性のない結果が得られるようです。私がそうするなら:

- (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 を取得することを計画していますが、これは最小限のコードの問題を示しています。

何か案は?

4

1 に答える 1