同步两个 NSScrollView

Synchronize two NSScrollViews

我正在开发一个小型 OS X 应用程序,它由两个 NSTextView 对象组成,每个对象都由一个 NSScrollView 包裹。

我遵循了 Apple Mac 开发者库 (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/NSScrollViewGuide/Articles/SynchroScroll.html)

中提到的步骤

它似乎工作...好吧,至少当用户通过执行通常的滚动手势手动滚动时。但是当用户在 NSTextView 中输入大量文本导致 ScrollView 向下滚动时,同步滚动似乎不起作用。

同步的(因此是监听的)滚动视图向下滚动片刻,然后跳回文本视图的顶部。

有人知道为什么会发生这种情况吗?

我找到了解决方案。

当以编程方式更改 TextView(位于同步的 ScrollView 中)的字符串值时,似乎会出现此问题。

我在更改字符串值后立即添加了一个类似 [self synchronizedViewContentBoundsDidChange:nil]; 的调用,这很有效。

当我现在向原始文本视图添加新行导致滚动视图向下滚动时,同步滚动视图会正确滚动。