gpt4 book ai didi

scroll - 保存和恢复 NSTextView 的位置

转载 作者:行者123 更新时间:2023-12-02 06:48:27 25 4
gpt4 key购买 nike

我希望能够保存 NSTextView 的当前文本和可见区域并恢复它。使用visibleRect和scrollRectToVisible:似乎会产生不一致的结果。如果我这样做:

- (void)restorePosition
{
NSRect r = [self.textView visibleRect];

[self.textView.layoutManager replaceTextStorage: self.textView.textStorage];
[self.textView scrollRectToVisible: r];
}

当 View 距离顶部不到 85 行时, View 将保持在原位,但我走得越远,它就会变得越远。从顶部开始 200 行,最终为 277,在 300 行,最终为 408,等等。

如果没有replaceTextStorage,它也可以按预期工作,但替换文本并找到以前的位置才是重点。替换文本会导致线矩形计算变得不稳定。

显然,我计划从实际应用程序中保存的对象获取新的visibleRect和textStorage,但这说明了最少代码的问题。

有什么想法吗?

最佳答案

我在恢复滚动位置方面遇到了类似的问题。对我来说,解决方案是在更改可见矩形之前强制 TextView 布局:

[textView.layoutManager ensureLayoutForTextContainer:textView.textContainer];

关于scroll - 保存和恢复 NSTextView 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com