在keyDown事件中获取modifierFlags而不按下非修饰键!

Vas*_*lis 5 events objective-c handle modifier keydown

我已经在NSDocument应用程序中将NSWindow子类化,以便接收keyDown事件.

我在我的子类中使用了以下代码...

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

    NSLog(@"keyDown!");

    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down!");
    }
    else
        [super keyDown:theEvent];
}
Run Code Online (Sandbox Code Playgroud)

当按下非修饰键时,我收到了关键事件!当我按下alt + z时,我也收到"Alt Key is Down"(alt + non-modifierkey).

这里的问题是,我只想单独按下alt/option键来处理事件,而不与其他键组合,并且-keyDown:不会被调用!我错过了什么?

谢谢...

ken*_*ytm 7

你可以独自赶上Alt键/ Option键-flagsChanged:替代-keyDown:.

-(void)flagsChanged:(NSEvent*)theEvent {
    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down (again)!");
    }
}
Run Code Online (Sandbox Code Playgroud)