在iphone上模拟触摸

在iphone上模拟触摸,iphone,objective-c,events,touch,Iphone,Objective C,Events,Touch,我试图将触控模拟为UIWebView,如何在特定位置以编程方式触发触控事件?(x和y坐标) 打电话就开始了 理想情况下,我希望在不使用任何javascript攻击的情况下完成这项工作,因为将来它可能不是uiwebview,在iPhone上合成一个触摸事件并不容易:你必须使用未公开的API,因此你很有可能破坏iOS的每一次更新,并遭到苹果的拒绝 演示如何在iPhone上合成触摸事件的链接: 这里还有一个关于StackOverflow的问题:这里值得指出KIF框架。它打算在模拟器中运行,但部分代码是

我试图将触控模拟为UIWebView,如何在特定位置以编程方式触发触控事件?(x和y坐标) 打电话就开始了


理想情况下,我希望在不使用任何javascript攻击的情况下完成这项工作,因为将来它可能不是uiwebview,在iPhone上合成一个触摸事件并不容易:你必须使用未公开的API,因此你很有可能破坏iOS的每一次更新,并遭到苹果的拒绝

演示如何在iPhone上合成触摸事件的链接:


这里还有一个关于StackOverflow的问题:

这里值得指出KIF框架。它打算在模拟器中运行,但部分代码是在代码中模拟触摸屏。幸运的话,这将是一个很好的起点

具体地说,请查看和行中带有AccessibilityLabel的TapView的
步骤

[view tapAtPoint:tappablePointInElement];

如果不越狱,就没有真正的方法将手势识别器挂接到整个系统的所有视图中。首先,在后台运行的应用程序无法执行此代码。

这是可能的。正如您所提到的,使用GSEvents并将它们发送到您试图控制/模拟的应用程序的紫色命名端口。当然,您需要KennyTM的GSEvent.h来完成此任务。 我已经为iOS 4.3做了这项工作,只是更改了Kenny拥有的一些值(比如kGSHandInfoTypeTouchDown),但现在我正在尝试为iOS 5做这项工作,但到目前为止,它还不起作用


编辑:它现在适用于iOS 5.1。

您需要做的是首先创建您想要的事件,然后通过“紫色端口”(例如马赫端口)将它们发送到SpringBoard。要使它们在系统范围内运行,必须通过端口将它们转发给每个应用程序。这意味着您需要实际执行windowmanager的操作,并查看哪个应用程序处于活动状态、屏幕锁定状态等

有很多私有框架API(IOSurface、GraphicServices、SpringBoardServices等)可以为您提供所需的部分

您必须在运行时使用dlopen()之类的工具加载这些私有框架


从iOS 6.1.4(当前的ATM)开始,如果不越狱,这是100%可能的,但您将加载苹果AppStore不允许的私有框架;)

您希望代码在配送应用程序中使用,还是希望执行UI测试?如果可能,针对配送应用程序?您是否在UIWebView上实现了此功能?我可以让它在其他类型的视图上工作,但它不会在UIWebView.PLZ中生成DOM事件。如果有人能帮我@Nate,你找到任何替代品了吗?现在在iOS9时间,所有那些旧的好的GSEvent API都不再可用了(我想是iOS7之后)?你确定吗?我最近一直在研究GSEvent私有API(),并且能够在我的应用程序处于后台时“按下”锁定按钮,无论我的应用程序是否在后台运行,我都无法使用GSEvent模拟触摸(但是我可以执行加速计事件)。我建议您将应用程序接收到的每个UIEvent转换为GSEvent进行分析。您甚至可以尝试接收一个触摸事件,然后重新发送。然后开始构建自己的结构并相应地更改字段。KennyTM的API是一个很好的开始,它实际上适用于iOS 4.3(您只需填写字段值,但正如我所说的,有些字段是常量,没有任何解释,比如PathProxity,2表示触地事件,1表示触地事件。PathIndex始终为2,pathMajorRadious和pathPressure始终为1.0,等等)@Jorgeguirre你能告诉我它在iOS 7上是如何工作的吗?对于iOS 7,GSEvent API已被弃用。您能告诉我它在iOS 7上的工作方式吗?对于iOS 7,GSEvent API已被弃用