看来 scrollWheel: 必须是它,才能接收这些。不幸的是,触控板的滚动增量比鼠标高几个数量级,因此滚动速度非常快。因此,我需要区分它们,以便我可以使用适当的阻尼器。
文档令人困惑地注意到,虽然您通常通过检查 NSEvent 的子类型来执行此操作,但在 scrollWheel: 中特别是这不起作用。但他们没有说你应该做什么。实验告诉我,虽然触控板滚动确实没有正确键入为 NSTouchEventSubtype,但它们的类型与鼠标滚轮滚动不同 - NSTabletPointEventSubtype 与 NSMouseEventSubtype。问题是,NSTabletPointEventSubtype 也是用于真正的平板电脑滚动事件的,其中的增量甚至更高。所以我也需要区分它们。
注意:类似的先前问题包括this,其中唯一的建议是基于未记录的 API 或其他具有类似 hack 的推断。有些人似乎建议您完全忽略 scrollWheel: 并手动跟踪触摸事件,但这似乎是很多冗余工作,可能会在未来的操作系统版本中中断。