文档对此真的很吝啬,但从我在网上收集的信息来看,wheelCount 应该是 1 仅用于 Y,2 用于 YX,3 用于 YXZ。
据我了解,设置 wheelCount = 2 内部CGEventCreateScrollWheelEvent
应将 x 和 y 滚动 10 像素,但下一段代码滚动,在某些应用程序(Chrome、Safari)中仅向上滚动 10 像素,而在其他应用程序(预览版、Firefox)中滚动两个轴:
CGEventRef scroll = CGEventCreateScrollWheelEvent(NULL,
kCGScrollEventUnitPixel,
(uint32_t)2,(int32_t)10,
(int32_t)10);
CGEventPost(kCGHIDEventTap, scroll);
// Verify deltas
int64_t deltaAxis1 = CGEventGetIntegerValueField(scroll, kCGScrollWheelEventPointDeltaAxis1);
int64_t deltaAxis2 = CGEventGetIntegerValueField(scroll, kCGScrollWheelEventPointDeltaAxis2);
NSLog(@"kCGScrollWheelEventPointDeltaAxis1: %lld",deltaAxis1); //kCGScrollWheelEventPointDeltaAxis1: 10
NSLog(@"kCGScrollWheelEventPointDeltaAxis2: %lld",deltaAxis2); //kCGScrollWheelEventPointDeltaAxis2: 10
CFRelease(scroll);
更新:经过一番挖掘,似乎有些应用程序不知道如何解释多轮滚动并且只滚动 x 或 y。
这可以使用上面的代码或 Macbook 触控板轻松重现:
在预览和 Safari 中打开放大的图片。在预览中,在触控板上对角滑动 2 根手指将创建一个非常平滑的 x&y 滚动。在 Safari 或 Chrome 中执行相同操作只会导致 X 或 Y 被滚动,并且总体上会感觉损坏。
我发现了一个与此相关的Chrome 错误,该错误已以“无法修复”关闭。无法理解为什么。
关于为什么会发生这种情况的任何更好的解释都会很棒。
谢谢