【发布时间】:2012-11-18 17:48:21
【问题描述】:
看来 scrollWheel: 必须是它,才能接收这些。不幸的是,触控板的滚动增量比鼠标高几个数量级,因此滚动速度非常快。因此,我需要区分它们,以便我可以使用适当的阻尼器。
文档令人困惑地注意到,虽然您通常通过检查 NSEvent 的子类型来执行此操作,但在 scrollWheel: 中特别是这不起作用。但他们没有说你应该做什么。实验告诉我,虽然触控板滚动确实没有正确键入为 NSTouchEventSubtype,但它们的类型 与鼠标滚轮滚动不同 - NSTabletPointEventSubtype 与 NSMouseEventSubtype。问题是,NSTabletPointEventSubtype 也是用于真正的平板电脑滚动事件的,其中的增量甚至更多高得离谱。所以我也需要区分它们。
注意:类似的先前问题包括 this,其中唯一的建议是基于未记录的 API 的推断,或其他具有类似 hack 的问题。有些人似乎建议您完全忽略 scrollWheel: 并手动跟踪触摸事件,但这似乎是很多多余的工作,可能会在未来的操作系统版本中中断。
【问题讨论】:
-
我收到了带有
subtype == NSEventSubtypeApplicationActivated的 scrollWheel 事件,它被记录为 "No overview available".. 否则,它没有被记录。更糟糕的是,当设置[event hasPreciseScrollingDeltas]时,我只看到非精确字段中的值发生变化。这个 API 看起来很乱。
标签: macos cocoa mousewheel trackpad