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

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

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


[重新填充数据的代码]

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


有任何想法吗?

最佳答案

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

-[NSView scrollRectToVisible:]



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


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

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

关于cocoa - 将NSTextView滚动到确切的矩形?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1804205/

10-13 09:21