区分实际的滚轮、触摸板和平板电脑滚动事件

3
似乎scrollWheel:是接收这些的唯一方法。不幸的是,触摸板滚动的增量比鼠标高数个数量级,因此滚动速度非常快。因此,我需要区分它们,以便可以应用适当的衰减器。
文档令人困惑地指出,虽然通常可以通过检查NSEvent 的子类型来实现,但在scrollWheel:特定情况下无法正常工作。但他们没有说明你应该怎么做。经过试验,我发现尽管trackpad卷轴确实没有被正确地标记为NSTouchEventSubtype,但它们的类型与鼠标滚轮滚动的类型不同 - NSTabletPointEventSubtype vs NSMouseEventSubtype。问题是,NSTabletPointEventSubtype也用于真正的平板电脑滚动事件,其中这些事件的增量甚至更高。因此,我需要区分它们。
注意:类似的先前问题包括此等问题,其中唯一的建议是基于未记录的API进行推断,或其他类似的技巧。有些人似乎建议完全忽略scrollWheel:并手动跟踪触摸事件,但这似乎会产生大量多余的工作,并可能在将来的操作系统中失效。

我正在接收到 subtype == NSEventSubtypeApplicationActivated 的 scrollWheel 事件,这在文档中被记录为“没有可用的概述”或者说根本没有记录。更糟糕的是,当 [event hasPreciseScrollingDeltas] 被设置时,我只能看到非精确字段中的值发生变化。这个 API 看起来很混乱。 - Tim Kane
1个回答

1

我相信你要找的是[event hasPreciseScrollingDeltas]。它在OS X 10.7中可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接