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

时间:2019-08-13 14:59:19

标签: swift macos scroll

我正在尝试在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)

我希望该应用与用户滚动相同的距离,但这不是这种情况。

1 个答案:

答案 0 :(得分:0)

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

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