gpt4 book ai didi

cocoa - 魔术鼠标动量滚动不起作用

转载 作者:行者123 更新时间:2023-12-03 16:34:21 25 4
gpt4 key购买 nike

不幸的是,这对我来说很难测试自己,因为我还没有拥有自己的魔术鼠标,但我的测试人员告诉我,他们确实有魔术鼠标,动量滚动在我的应用程序中不起作用。我没有子类化 NSScrollView,但 ScrollView 的文档 View 都是自定义的。我也没有在任何地方重写scrollWheel:,但动力显然不起作用。我什至不知道从哪里开始。我以为它只会发送scrollWheel 事件,事情就会自行解决。 (用滚轮或在 MBP 触控板上滚动可以按预期工作。)显然我必须以某种方式做一些阻止它的事情,但我什至不知道从哪里开始。想法?

最佳答案

我不久前就发现了这一点,问题是在滚动时,我做了很多奇特的 View 操作,有点像 iPhone 上 UITableView 在屏幕滚动和滚动时添加和删除 View 的方式。这对于性能来说非常有效 - 但我越深入 OSX 编程,我就越意识到这对于 OSX 来说是错误的(但对于 iPhone 来说是正确的想法)。

无论如何,看起来真正发生的事情是,当您执行滚轮滚动之类的操作时,滚动事件会发送到鼠标光标下方的 View ,然后它会沿着响应者/ View 传递,直到到达某个地方处理它。通常这不是问题,但随着动量滚动,操作系统实际上只是将更小的scrollWheel事件发送到动量开始时光标下方的 View 。这意味着如果 View 在滚动过程中被删除(因为它滚动到屏幕之外或其他原因),它会破坏链条并且动量停止,因为仍在获取scrollWheel消息的 View 不再位于 View 层次结构中。

“简单”的修复是不删除获得最后一个scrollWheel事件的 View - 即使它不在屏幕上。更好的解决方案(也是我使用的解决方案)是不要尝试像 UIViews 一样使用 NSViews,而只是使用 drawRect 绘制内容。 :) 不仅速度快了大约十亿倍,而且它还可以与动量滚动一起工作,因为这就是 OSX 期望的工作方式。

跟我重复一遍:OSX 不是 iPhoneOS..:P

关于cocoa - 魔术鼠标动量滚动不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com