Appleのドキュメントを読み込もうとしましたが、キーイベント(スペースまたはその他)をNSDocumentアプリケーションにキャプチャする方法がどこにも見つかりません。
initialFirstRepsodnerでは、よく理解していればそれは不可能です。
何か案が?
ありがとうございます!アンドレア
Appleのドキュメントを読み込もうとしましたが、キーイベント(スペースまたはその他)をNSDocumentアプリケーションにキャプチャする方法がどこにも見つかりません。
initialFirstRepsodnerでは、よく理解していればそれは不可能です。
何か案が?
ありがとうございます!アンドレア
Appleのドキュメントを読み込もうとしましたが、キーイベント(スペースまたはその他)をNSDocumentアプリケーションにキャプチャする方法がどこにも見つかりません。
重要なイベントを何のために処理したいですか?どこかに実装する必要がありますkeyDown:
が、正確にはどこに実装するかによって異なります。
ウィンドウに送信されるすべてのイベントをキャプチャする場合は、ウィンドウをサブクラス化して-sendEvent:をオーバーライドできます。アプリ全体のすべてのイベントをキャプチャする場合は、NSApplicationサブクラスの同じメソッドをオーバーライドできます。
まず、ピーターの助けに感謝します!
私はホットキーを使用しましたが、このサンプルは非常に役に立ちました。
http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/
ありがとうございます!アンドレア
まず、NSWindowのサブクラスを作成する必要があります。xcodeでは、[ファイル]->[新しいファイル]->[ObjectiveCクラス]を実行します。「NSWindowMyEvents」のような名前を付けます。これにより、2つのファイルが作成されます:.hと.m、NSWindowMyEvents.hに移動し、次のように宣言します。
@interface NSWindowMyEvents : NSWindow {
}
変更を保存してコンパイルします(IBが新しいヘッダー0を既に開いている場合は、それを確実に読み取るようにします)。
Interface Builderを開き、ドキュメント/メインウィンドウを含むnib/xibファイルをロードします。ファイルの所有者の「ウィンドウ」アウトレットがメインウィンドウに設定されていることを確認します。メインウィンドウ(イベントを取得するウィンドウ)をクリックし、そのクラスを(Identity inspector cmd + 6を介して)現在のNSWindowではなくNSWindowMyEventsに設定します。
変更内容を保存!
xcodeとNSWindowMyEvents.mに戻り、次のコードを貼り付けます。
- (void)keyDown:(NSEvent *)theEvent
{
NSLog(@"keyDown!");
if ([[NSApp currentEvent] modifierFlags] & NSCommandKeyMask)
{
NSLog(@"CommandKey Down!");
}
[super keyDown:theEvent];
}
必要に応じてイベントをスーパーに送信し、残りのレスポンダーチェーンにイベントを渡します。現在、キーボードイベントを処理しています。同様に、NSWindowMyEvent.mで任意のイベントを処理できます
お役に立てば幸いです。
NSUserDefaultsを使用し、共有グローバルキーコンボを保存してから、keyDown:をそれらの保存された設定と照合し、どのキーが押されたかに基づいてアクションを実行することをお勧めします。
すなわち:#define kMyKeyCommand @ "i"