【问题标题】:Distinguishing actual scrollwheel vs trackpad vs tablet scrolling events区分实际滚轮、触控板和平板滚动事件
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多