1

コマンドキーが押されているかどうかを検出しようとしていますが、一生の間、次の問題を理解できません。以下のコードを提供するためにビューをオーバーライドしました:

- (void)flagsChanged:(NSEvent *)theEvent {

    NSLog(@"flags changed in %@", self);
    BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask);

    if (commandKeyPressed)
        NSLog(@"command key in %@", self);
}

コマンドキーを押すたびに「フラグが変更されました」というメッセージが表示されますが、「コマンドキー入力」メッセージは表示されません。私は何が欠けていますか?

4

1 に答える 1

2

ABOOLは、signed charであるため、をに変換するintBOOL、下位8ビットを除くすべてが切り捨てられます。そしてあなたの場合、非ゼロビットは下位8ビットにはありません。代わりに、

BOOL commandKeyPressed = ([theEvent modifierFlags] & NSCommandKeyMask) != 0;

あるいは単に

if ([theEvent modifierFlags] & NSCommandKeyMask)
于 2013-01-24T19:04:56.670 に答える