TextExpanderのようなアプリを作りたかったのですが、テキストをどのように傍受するかわかりません。私の知る限り、NSAccessabilityから始める必要があります。誰かがいくつかのスニペットを共有できますか、または少なくとも私を正しい方向に向けることができますか?
2 に答える
まず、サンドボックスの要件があるため、App Storeでアプリを販売する場合、これはまったく不可能であることに注意する必要があります。
アプリをサンドボックス化する予定がない場合は、NSEvent
classメソッドaddGlobalMonitorForEventsMatchingMask:
を使用して、他のアプリでキーが押されたときに呼び出されるグローバルキーイベントハンドラーを作成できます(ただし、独自のアプリではありませんaddLocalMonitor...
。そのために使用します)。
TextExpanderのようなスニペットを実際に挿入するには、いくつかの方法があります。アクセシビリティAPIを使用できますが、そのためには、ターゲットとするアプリがアクセシビリティをサポートしている必要がありますが、常にそうであるとは限りません。
もう1つのオプションは、Quartz Event Services(CGEvent)APIを使用することです。これは、(とりわけ)低レベルのメソッドを提供して主要なイベントをシミュレートします。
編集:気にしないでください。あなたはMacOSについて質問しています。あなたはiOSについて質問していると思いました。
TextExpanderが他のアプリでどのように使用されているかを確認する必要があります。ターゲットアプリは、TEが提供するオブジェクトをテキストフィールドのデリゲートにすることで、TEのサポートを組み込む必要があります。他の人のアプリでコードを実行することはできません。彼らはあなたのコードを彼らのアプリにコンパイルしなければなりません。そのため、TextExpanderSDKがあります。
TextExpanderコードがターゲットアプリに配置されると、テキストフィールドデリゲートは共有ペーストボードに配置されたスニペットを探して共有スニペットを取得します。