Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在keyDown事件中获得modifierFlags,而无需同时按下非修改器键!_Objective C_Events_Handle_Keydown_Modifier - Fatal编程技术网

Objective c 在keyDown事件中获得modifierFlags,而无需同时按下非修改器键!

Objective c 在keyDown事件中获得modifierFlags,而无需同时按下非修改器键!,objective-c,events,handle,keydown,modifier,Objective C,Events,Handle,Keydown,Modifier,我在NSDocument应用程序中对NSWindow进行了子类化,以便接收键控事件 我在我的子类中使用了以下代码 - (void)keyDown:(NSEvent *)theEvent { NSLog(@"keyDown!"); if ([theEvent modifierFlags] & NSAlternateKeyMask) { NSLog(@"Alt key Down!"); } else [super keyDo

我在NSDocument应用程序中对NSWindow进行了子类化,以便接收键控事件

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

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

    NSLog(@"keyDown!");

    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down!");
    }
    else
        [super keyDown:theEvent];
}
当按下非修改键时,我接收到键事件! 例如,当我按下Alt+z(Alt+non-modifierkey)时,我也会收到“Alt键已关闭”

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


谢谢…

您可以单独捕获Alt/Option键,而不是
-keyDown:

-(void)flagsChanged:(NSEvent*)theEvent {
    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down (again)!");
    }
}
您可以这样做:

-(void)flagsChanged:(NSEvent*)theEvent {
    [super flagsChanged:theEvent];
    if ((([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) & NSAlternateKeyMask) > 0) {
        NSLog(@"Alt key Down (again)!");
    }
}

我不需要把这封信转发给super吗?也许不是哈?