2

- (void)flagsChanged:(NSEvent *)theEventアプリケーションにメソッドを実装しました。[alt]キーを押したままにすると正常に動作します。このメソッドは、キーが押されたときにのみ送信されますが、もう一度離したときは送信されません。は- (void)keyUp:(NSEvent *)theEvent呼び出されません。[alt]キーがいつリリースされるかを確認する方法はありますか?

コードは次のとおりです。

- (void)flagsChanged:(NSEvent *)theEvent
{
    if([theEvent modifierFlags] & NSAlternateKeyMask)
    {
        NSLog(@"alt is down!!!");
    }
}
4

2 に答える 2

4

わかった。コードをもう少しテストする必要があります。NSEvent をログに記録した後、keyUpメソッドが既に実装されていることに気付きました (コメントで指摘してくれたJonathan Grynspanに感謝します)。

だから今私のコードは次のとおりです。

- (void)flagsChanged:(NSEvent *)theEvent
{
    if([theEvent modifierFlags] & NSAlternateKeyMask)
    {
        NSLog(@"alt is down!!!");
    }
    else if([theEvent keyCode] == 58)
    {
        NSLog(@"alt is up!!!");
    }
}

これで問題なく動作するようになりました!

于 2012-08-24T17:27:31.647 に答える
0

あなたのコードは右altのために壊れています。NSAlternateKeyNask廃止されました。

- (void)flagsChanged:(NSEvent *)theEvent {
    if ([theEvent modifierFlags] & NSEventModifierFlagOption) {
        NSLog(@"alt is down!!!");
    } else if ([theEvent modifierFlags] | NSEventModifierFlagOption) {
        NSLog(@"alt is up!!!!!");
    }
}

これらのイベントは、マスクの変更時に発生することに注意してください。たとえば、 を押した場合、alt2cmdつの「キーダウン」alt イベントが発生します。

于 2019-06-05T14:51:45.837 に答える