翻译为中文:Mavericks: 如何禁用响应式滚动

响应式滚动对我来说带来了很多问题。当它正常工作时,确实很好,但有时会出现严重的延迟,尤其是在Chrome浏览器中。 有人找到了一种方法来禁用响应式滚动,并使滚动行为像在10.8版本中一样吗?无论是全局设置还是每个应用程序设置都可以。 在“优化OS X上的绘图和滚动”WWDC视频中,苹果工程师使用了一个看起来像AppleScript文件的东西来全局禁用响应式滚动,所以这是可能的,但我无法弄清楚如何操作。

1“响应式”滚动在我2009年的MacBook上真是太糟糕了。在Mountain Lion系统上,我的滚动性能非常好,但现在滚动非常卡顿,我无法滚动到我想要查看的内容。这真的很令人沮丧。 - OregonTrail
那完美地描述了我遇到的问题... 不过,就算值不值得一提,我用的是2012年的MacBook Pro。 - bogdansrc
@bogdansrc 关于Chrome,您尝试过删除然后重新安装吗? - Simon
@Simon,是的,试过了。这也是在新安装的Mavericks上。 - bogdansrc
3个回答

更新(2013年11月7日,致电苹果客服后):

我还需要:

1)重置PRAM(关机后,按住CMD+ALT+P+R直到第二次咚声,然后开机), 如何在您的Mac上操作:https://support.apple.com/kb/ht1379

2)重置SMC(关机后,按住SHIFT+CTRL+ALT(option)+POWER,然后开机), 如何在您的Mac上操作:https://support.apple.com/kb/HT3964

以下设置应为:有惯性


这可能不是永久解决方案,但与系统重启相比,它是一种快速且舒适的技巧。 对我来说有效。抱歉截图是波兰语的。无论如何,你应该能够通过图像/图标来处理它。 首先从系统偏好设置中打开辅助功能。

enter image description here

然后在触摸板/鼠标设置中,点击触摸板按钮。

enter image description here

然后可以选择带或不带惯性来进行游戏。

enter image description here


我认为响应式滚动与惯性滚动是不同的... - DanHickstein
1@DanHickstein 这是一种权宜之计。 - andilabs
嗯,我认为响应式滚动是一种新的技术,可以使滚动以60帧每秒的速度运行,具体讨论可以参考这里:https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_9.html 我不确定它是否与惯性滚动有关。 - DanHickstein
也许不是。但是我和一些用户意识到,通过与内部进行玩耍可以解决在Chrome中出现的冻结问题。 - andilabs
@andi 谢谢你提供的波兰语(如果我没记错的话)翻译,也非常感谢! - Simon
2禁用惯性滚动对我来说不是一个选择(我讨厌非惯性滚动)。此外,响应式滚动与惯性滚动无关。无论是否有惯性,您仍然可以获得响应式滚动。 - bogdansrc
@bogdansrc 你不需要禁用它。只需暂时更改一下,然后再改回来。我的MBP Retina 15寸在进行这样的设置“玩耍”之后,就不再有这个问题了。 - andilabs
你是指SHIFT+CTRL+ALT + POWER - 重置时的系统管理控制器(SMC)吗? - markhunte
@markhunte 是的,我是指SMC。对不起打错了。 - andilabs

首先,我发布这篇文章是为了提供可能有帮助的信息,而不是解决方案。这可能会让某人朝着正确的方向前进。
我在OSX的最新功能中找到了这个,其中详细解释了响应式滚动的工作原理。 底部还有一条注释,说明如何在每个应用程序中禁用它以进行测试。 但是我在我自己构建的应用程序或其他任何应用程序中都没有看到这个选项。 响应式滚动 响应式滚动是AppKit的一个增强功能,使滚动更加流畅。这涉及到两个重要的改变,影响你的应用程序绘制内容的方式: 滚动视图会要求其子视图在正常视图区域之外绘制额外的内容,以便该内容可以立即用于滚动目的。这个额外的窗口缓存存储在可清除内存中,以最小化额外的分页。滚动线程试图以每秒60帧的速度重新绘制视图,但如果应用程序无法跟上,则会减慢速度。滚动事件在后台线程上处理。大多数应用程序会自动获得这种响应式滚动行为。然而,一些视图必须明确选择,包括支持图层的视图、自定义滚动视图或剪辑视图子类覆盖drawRect:方法的视图、基于NSSurface的文档视图、透明文档视图以及覆盖lockFocus方法的文档视图。 对于自动启用响应式滚动的视图,作为开发者,你不会察觉到行为的变化。然而,如果你的应用程序在滚动时出现任何异常行为,请提交错误报告。 注意:你可以通过在Finder中选择“文件”>“获取信息”来临时禁用响应式滚动以进行测试。更改设置后,必须退出并重新启动应用程序。有关详细信息,请参阅OS X v10.9的AppKit发布说明。 我看了一下appkit发布说明-响应式滚动,其中有更详细的内容。 有一些条件应该阻止将响应式滚动分配给应用程序。其中之一是: 引用: 应用程序链接在10.7或更早版本(应用程序必须在Mountain Lion或更高版本上链接以支持此功能) 我理解这意味着如果应用程序也构建为在10.6上运行,则不会添加此功能。 据我所知,Chrome可以在10.6及更高版本上运行。但我怀疑下载器正在下载适用于您当前系统的版本。 可能只针对10.6构建的版本会在Chrome中禁用它。
更新* 但正如bogdansrc在评论中指出的那样,10.6没有单一版本。
我确实尝试过。
defaults write ~/Library/Preferences/com.google.Chrome isCompatibleWithResponsiveScrolling -bool NO

但 isCompatibleWithResponsiveScrolling 是针对 nsview 的子类,我并不真的期望它能工作。我也没有遇到这个问题,所以无法告诉。


这看起来像是一个有趣的黑客攻击。 - New Alexandria
“对于10.6版本不支持响应式滚动的假设是错误的。这取决于应用程序链接的软件开发工具包(SDK)。你可以让应用程序链接到10.9版本的SDK,并且在10.6上正常运行。据我所知,一般的做法是链接到最新的SDK,所以Chrome很可能也是这样做的。如果没有这样做,它就不会有响应式滚动功能。根据你所运行的OS X版本,Chrome没有多个版本可供选择,这种说法是荒谬的。” - bogdansrc
我基本上想说并从苹果的笔记中正确或错误地解释,如果基本sdk为10.6且没有链接到任何比它更高的版本,那么据我理解,该应用程序将没有RS。你开始得很好,但是通过“那很愚蠢”来侮辱它。一个简单的“没有10.6只有Chrome”就足够了。应用程序可以有旧操作系统的版本,这些版本不会安装或在最新操作系统上运行。这就是我所思考的。 - markhunte


2如果John Siracusa不知道怎么做,很有可能是不可能的。http://arstechnica.com/apple/2013/10/os-x-10-9/ - user9290
1一位苹果工程师在“优化OS X绘图和滚动”WWDC会议期间使用了类似于AppleScript的东西来完成这个任务。视频可以在https://developer.apple.com/wwdc/videos/上观看。但这并不意味着在最新版本的Mavericks中仍然可以实现。 - bogdansrc