在iOS7上注入系统范围的触摸事件

Ben*_*ing 48 iphone objective-c iphone-privateapi ios ios7

此前iOS7有可能注入的触摸事件与GSSendSystemEventGSSendEvent私人API调用,例如:

在iOS7上,这些调用似乎无声地失败了.在iOS 7模拟系统范围的触摸中已经提出了另一种选择,但它仅适用于越狱设备.https://github.com/kif-framework/KIF看起来像另一个选项,但它似乎只支持为当前应用程序注入事件而不是系统范围(所以当你是应用程序时你不能注入触摸事件例如,在背景中.

那么如何在没有越狱的情况下在iOS7上注入系统范围的触摸事件?

小智 -4

您可以子类化 UIWindow 并覆盖 sendEvent。我用它来实现多个侦听器模式,但您也可以使用它来触发事件......

- (void)sendEvent:(UIEvent*)event {
    [super sendEvent:event];
    //NSLog(@"NSEventListenerWindow.sentEvent: %@\n", event);

    // pass all events on to those who listen
    for ( id listener in listeners) {
        if ([listener respondsToSelector:@selector(sendEvent:)]) {
            [listener sendEvent:event]; 
        }
    }
    .....
Run Code Online (Sandbox Code Playgroud)