在iPhone上记录一组触摸事件然后进行回放,这是否可能?我已经搜索了很多但是没有找到答案。如果可能的话,有人能举个例子说明吗?
我不是为了测试目的而寻找。在我的应用程序中,我只想记录一组事件,然后想要回放来向用户解释应用程序的流程,而不是创建动画。
谢谢。
在iPhone上记录一组触摸事件然后进行回放,这是否可能?我已经搜索了很多但是没有找到答案。如果可能的话,有人能举个例子说明吗?
我不是为了测试目的而寻找。在我的应用程序中,我只想记录一组事件,然后想要回放来向用户解释应用程序的流程,而不是创建动画。
谢谢。
记录非常简单。查看 UIResponder 上各种“响应触摸事件”和“响应运动事件”方法。只需创建自己的 UIView 子类(由于 UIView
继承自 UIResponder
),并在相关方法中保留传递的事件副本。
回放有点复杂;没有办法创建 UITouch
或 UIEvent
对象(因此无法创建假事件并将其传递给 -[UIApplication sendEvent:]
)。但是,您可以手动解析事件对象数组并自行处理它(除了代码看起来不太美观之外,没有任何阻止你的东西)。
虽然没有内置的宏功能,但你肯定可以将该功能集成到你的应用程序中。不过,你需要做更多的工作,而不仅仅是回放事件。触摸通常是不可见的,但如果你试图向用户解释如何使用你的应用程序,你可能希望有一些可视化表示触摸触发不同响应的方式,类似于iOS模拟器使用白点来表示按住选项键时的多个触摸。
假设你可以解决这个问题,有两种容易记录用户操作的策略:
使用撤销管理器: NSUndoManager已经设置好了“记录”可撤销事件。如果你花费一些时间使应用程序中的所有内容都可以撤销,你就可以执行一组操作,将它们全部撤消以将它们移动到重做堆栈中,然后将重做堆栈中的事件保存为你的脚本。
使用辅助功能: 辅助功能框架在用户界面元素被触摸时发送通知。你的应用程序可以使用这些通知来创建一个播放脚本。不过,你仍然需要编写代码来回放脚本中的事件。