Cocoa 如何在两个NSScrollView实例中同步/链接滚动?

Cocoa 如何在两个NSScrollView实例中同步/链接滚动?,cocoa,nsview,appkit,nsscrollview,Cocoa,Nsview,Appkit,Nsscrollview,我已经阅读并应用了同步两个NSScrollView实例。我的问题更简单,因为我只需要在一个方向上同步(而不是双向同步) 总结该方法:“源”scrollView发布边界更改通知,该通知由调用侦听scrollView的clipview的scrollToPoint方法的处理程序观察到 问题 虽然第二个scrollView与第一个(最终)是同步的,但两者之间有一个非常明显的延迟。这对我来说更糟,因为侦听NSScrollView包含需要与正文内容对齐的标题 我已经通过以每秒30帧的速度记录我的滚动动作并回

我已经阅读并应用了同步两个
NSScrollView
实例。我的问题更简单,因为我只需要在一个方向上同步(而不是双向同步)

总结该方法:“源”scrollView发布边界更改通知,该通知由调用侦听scrollView的clipview的
scrollToPoint
方法的处理程序观察到

问题
虽然第二个scrollView与第一个(最终)是同步的,但两者之间有一个非常明显的延迟。这对我来说更糟,因为侦听
NSScrollView
包含需要与正文内容对齐的标题

我已经通过以每秒30帧的速度记录我的滚动动作并回放来确认延迟。在这个粒度级别上检查,很明显,源scrollView在侦听scrollView之前开始移动


如何使这两个ScrollView真正保持同步?这是可能的还是我期望的太多?

我通过使用
NSScrollView的
addFloatingSubview:
API间接解决了这个问题。但是,这会产生其他问题,即
ScrollDirectToVisible
预期是一个无障碍的
NSClipView
。这在本问题中有更详细的记录:


这可能是响应滚动的结果。基本上,系统使用overdrawn区域来显示滚动区域,甚至可能在内容视图的边界更改之前。否则,我希望滚动操作都是同步的,并在相同的更新过程中绘制。尝试禁用响应滚动,方法是覆盖
+isCompatibleWithResponsiveScrolling
,在滚动视图或内容视图中返回
NO
。(我意识到这可能与您在其他问题中表达的提高滚动性能的愿望相冲突。)@Kenthomass谢谢,这是有道理的,我现在就要进入管理式透支的世界。请参阅下面我的间接解决方案-不幸的是,它有一个有趣的意外使用后果。“正在侦听的
NSScrollView
包含需要与正文内容对齐的标题”您可能想要自定义标尺视图吗?@kenthomass hmmm。。。我从来没有注意过统治者(给事物命名的危险性有一个教训)。我试图在这里实现电子表格列标题和行标题,如果(1)您可以将自己的视图放入其中(2)它们与正文同步滚动,(3)它们位于clipView=>winner的上方。最担心的是(1)。@KenThomases OK,在标题中添加了标尺。它们满足(3)中的标准,但在(2)中下降,因为它们与内容不同步(完美),存在延迟。捕捉到我以每秒30帧的速度滚动来验证这一点。在那之后,我没有调查(1)。我猜想它们是在“响应滚动”循环之外进行管理的。令人沮丧的接近,但正如他们所说:“一次失误等于一英里”。