0

我在 NSScrollView 中有一个 NSTextView,我想在用新数据重新填充 NSTextView 后将它滚动到原来的位置。到目前为止,我已经尝试了下面代码的变体,但它从来没有完全正确。

我需要的是一个setDocumentVisibleRect方法,但没有。

NSRect oldVisibleRect = [[[self scrollView] contentView] documentVisibleRect];

[重新填充数据的代码]

[[[self scrollView] contentView] scrollToPoint:newPoint];

有任何想法吗?

4

1 回答 1

2

您需要更具体 - 这不是“完全正确”吗?

-[NSView scrollRectToVisible:]

滚动接收器最近的祖先 NSClipView 对象所需的最小距离,以便接收器的指定区域在剪辑视图中可见。

NSTextView 是 NSView 的子类(尽管您应该始终考虑给定视图是否具有翻转坐标...),因此您可以使用 -scrollRectToVisible:

此外,除非您的文本视图内容更改与以前几乎完全相同,否则旧的可见矩形不会完全相同,所以我不希望它表现完美。如果您只对文本应用属性(如语法突出显示),则无需对需要完全重新加载(和重新滚动)的文本视图(文本存储或容器)执行任何操作。我想这可以归结为“你到底想做什么?”

于 2009-11-27T13:40:59.813 回答