尝试根据用户记录的操作发送滚动事件时,滚动的距离与用户的



我正在尝试在 Swift 5 中创建一个应用程序,该应用程序捕获所有鼠标和键盘事件(本质上是键盘记录器)并将它们保存到.csv中,以便以后可以通过读取该.csv来播放事件。它还录制了一个视频以供参考。这是为了进行质量/UI 测试,并帮助捕获来自不同类型用户的确切工作流程。我的点击和击键工作正常,但我在滚动时遇到了一些问题。我尝试捕获event.scrollingDeltaY,然后创建一个CGEvent来发送它,但结果非常跳跃,与用户所做的滚动不匹配。

我尝试过滚动DeltaY,对于CGEvent单元,我已经尝试了CGScrollEventUnit.pixel和CGScrollEventUnit.line,但两者都没有像我预期的那样运行。

// Creating the string to add to the .csv during recording
tempStr += event.deltaX.description + "," + event.scrollingDeltaY.description + "n"

// the CGEvent created during playback
let eventScroll = CGEvent(scrollWheelEvent2Source: nil, units: CGScrollEventUnit.pixel, wheelCount: 1, wheel1: Int32(deltaY), wheel2: 0, wheel3: 0)
eventScroll?.post(tap: .cghidEventTap)

我希望应用程序滚动的距离与用户相同,但这里的情况并非如此。

我遇到了完全相同的问题,解决方案似乎在于event.scrollingDeltaY似乎是在行中而不是以像素为单位。

尝试将CGScrollEventUnit.pixel更改为CGScrollEventUnit.line(或仅.line)

最新更新