2

ユーザーが押すすべてのキーを検出する必要があります。を使用-keyDown:すると、ほとんどのキー (英数字、ファンクション キー、矢印、スペース バー、エスケープ、リターン) を押すことができますが、単独で押すと修飾キーを取得できません。

修飾キーを含むキーストロークを完全に検出するにはどうすればよいですか?

4

2 に答える 2

3

それを試してみてください:

[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSFlagsChangedMask handler:^NSEvent *(NSEvent *incomingEvent) {
    if (incomingEvent.type == NSFlagsChanged && (incomingEvent.modifierFlags & NSDeviceIndependentModifierFlagsMask)) {
        NSLog(@"modifier key down");
    } else if (incomingEvent.type == NSKeyDown) {
        NSLog(@"other key down");
    }

    return incomingEvent;
}];
于 2014-04-06T13:21:31.027 に答える
3

flagsChanged: メソッドは、他のキーが同時に押されることなく修飾キーが押されたことを検出するのに役立ちます。たとえば、ユーザーが単独で Option キーを押した場合、レスポンダー オブジェクトは flagsChanged: の実装でこれを検出できます。

于 2014-04-05T21:34:56.950 に答える