将NSTextView滚动到精确的矩形?

时间:2009-11-26 15:08:04

标签: cocoa nstextview nsscrollview

我在NSScrollView中有一个NSTextView,我想将它滚动到以前用新数据重新填充NSTextView之后的位置。到目前为止,我已尝试过以下代码的变体,但它永远不会得到它。

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

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

[重新填充数据的代码]

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你需要更具体一点 - 这不是“非常正确”吗?

-[NSView scrollRectToVisible:]
  

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

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

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