Objective c 在keyDown事件中获得modifierFlags,而无需同时按下非修改器键!
我在NSDocument应用程序中对NSWindow进行了子类化,以便接收键控事件 我在我的子类中使用了以下代码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
- (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吗?也许不是哈?