2011-10-20 2 views
1

私のアプリケーションでTabキーを押す必要があります。いくつかの条件では、ハンドラでいくつかの処理を行い、それ以上のイベント処理を抑制したい場合や、他の標準ハンドラをスキップしてこのイベントを処理するようにしたい場合もあります。カスタムハンドラで処理した後、イベントをハンドラチェーン(Carbon)まで伝播する方法はありますか?

ここで私はそれをやろうとしている私の非常にシンプルなアプリケーションです。 https://github.com/prudnikov/TestGlobalShortcut/blob/master/TestGlobalShortcut/AppDelegate.m

タブ・プレスをキャッチしますが、それ以降のイベント処理は常に抑制されます。テキストエディタでTabキーを押すと、タブキーが挿入されません。

標準イベントハンドラを伝播するにはどうすればよいですか?

答えて

1

私はあなたがRegisterEventHotKeyを使ってそれを行うことはできないと思います。しかし、アプリが最前面にないときにタブキーを受け取る必要がない場合は、RegisterEventHotKeyを使用しないでください。通常のCarbon Eventハンドラを使用するか、Cocoaイベント処理テクニックを使用します。

+0

あなたのアプリが最前面にない場合は、このイベントを受け取る必要があります。現在、私はNSEventの '+(id)addGlobalMonitorForEventsMatchingMask:handler:'を使用しています。この解決策で私は正反対の問題を抱えています。 Carbon Eventは私のために正しい選択ですか? –

+0

いいえ、Carbon Eventsは、他のアプリ向けのキーストロークをキャプチャすることはできません。私はあなたがQuartzのイベントタップに頼る必要があると思います、 'CGEventTapCreate'を見てください。 – JWWalker

関連する問題