2012-05-09 18 views
1

以下のコードでテキストフィールドに入力するキーユーザを認識します。しかし、 'Caps lock' - 'shift' - 'control' - 'command' - 'オプション ' - 'タブ 'どのように私はそれらを認識できますか?テキストフィールドに入力するキーユーザを認識

- (void)keyUp:(NSEvent *)theEvent 
{ 
    unichar keyChar = 0; 
    keyChar = [theArrow characterAtIndex:0]; 
    NSString *aci=[NSString stringWithFormat:@"%d",keyChar]; 
} 
+0

可能性があります。http://stackoverflow.com/questions/5837041/how-to-get-the-caps-lock-pressed-shift-key-key-state-programmatically-on-ios-s – rishi

答えて

1

これらは修飾キーであり、彼らはNSKeyDownNSKeyUpイベントを生成しません。彼らはNSFlagsChangedイベントを生成します。対応するNSResponderの方法は-flagsChanged:です。

+0

ありがとうございます、それはworks.butどのようにこの方法で押されたキーを認識するのですか? –

+1

'[theEvent modifierFlags]'をチェックしてください。たとえば、if([theEvent modifierFlags]&NSControlKeyMask){/ *コントロールキーが押された* /} else {/ *コントロールキーが押されていない* /} '。修飾キーの1つが最初に押されたことを知る必要がある場合は、インスタンス変数にフラグを格納し、新しいフラグを古いものと比較して変更内容を確認する必要があります。イベントがない場合は、 'NSWindow'または' NSApplication'の '-currentEvent'メソッドを使用して、これらのキーの押下を気にしていた時点のイベントに基づいて、この記録された状態を初期化してください。 –

+0

ありがとうございます。この2つの方法でちょうどもう1つの質問私はユーザーがTabキーを押すと認識できません。シャット私はそれについて行う必要がありますか? –

関連する問題