同步两个 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];
的调用,这很有效。
当我现在向原始文本视图添加新行导致滚动视图向下滚动时,同步滚动视图会正确滚动。
我正在开发一个小型 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];
的调用,这很有效。
当我现在向原始文本视图添加新行导致滚动视图向下滚动时,同步滚动视图会正确滚动。