49

GSSendSystemEventiOS7 より前は、GSSendEventプライベート API 呼び出しを使用してタッチ イベントを挿入することができました。

ただし、iOS7 では、これらの呼び出しは黙って失敗するようです。iOS 7 でのシステム全体のタッチのシミュレートで代替案が提案されていますが、それはジェイルブレイクされたデバイスでのみ機能します。https://github.com/kif-framework/KIFは別のオプションのように見えますが、システム全体ではなく現在のアプリのイベントの挿入のみをサポートしているようです (アプリの使用中にタッチ イベントを挿入することはできませんでした)たとえば、バックグラウンドにあります)。

では、ジェイルブレイクせずに iOS7 でシステム全体のタッチ イベントを挿入するにはどうすればよいでしょうか?

4

3 に答える 3

-4

You can subclass UIWindow and overwrite sendEvent. I use it to implement a multiple listeners pattern, but you can also use it to fire events...

- (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]; 
        }
    }
    .....
于 2013-11-14T18:03:24.850 に答える
-5

iOS SDK Notification service api を使用した方がよいと思います。それはあなたが望むものを達成するための最もクリーンな方法です.

概念的には、Apple は (まだ) サードパーティがシステム全体のイベントを発行することを意図していません。これは、iOS の慎重なキュレーション モデルにうまく適合しないためです。そのため、人々はプライベート API とジェイルブレイクに頼っています。プライベート API は、その名前が示すように、依存することは想定されていません。

このように考えてみてください。システム全体に責任を負っていない限り、ユーザー アプリではあり得ないことですが、システム全体のイベントを生成するビジネスは実際にはありません。Android がこれを行う方法は知っていますが、それは別の話です (このトピックには適していません)。

Mac では、XPC サービス API によりプロセスが相互に通信できるようになりますが、システム全体のイベントを生成する方法としてはまだ不十分です。iOS SDK の通知 API を使用することをお勧めします。これはおそらく、目的を達成するための最もクリーンな方法です。はい、Apple に送信され、デバイスに戻されますが、それが現在利用可能なメカニズムです。

于 2014-01-08T13:01:14.567 に答える