我正在尝试在Swift 5中创建一个应用程序,该应用程序捕获所有鼠标和键盘事件(本质上是一个键盘记录程序)并将其保存到.csv中,以便以后可以通过读取该.csv来回放事件。它还记录了视频以供参考。这是为了进行质量/ UI测试并帮助捕获不同类型用户的确切工作流。我的点击和击键有效,但是在滚动时遇到了一些问题。我尝试捕获event.scrollingDeltaY,然后创建一个CGEvent发送它,但是结果非常跳跃,并且与用户所做的滚动不匹配。
我尝试了scrollingDeltaY,对于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)
我希望该应用与用户滚动相同的距离,但这不是这种情况。
答案 0 :(得分:0)
我遇到了完全相同的问题,解决方案似乎在于event.scrollingDeltaY
似乎是行而不是像素。
尝试将CGScrollEventUnit.pixel
更改为CGScrollEventUnit.line
(或仅更改为.line
)