我在NSDocument应用程序中已经将NSWindow子类化,以便接收keyDown事件。
我在子类中使用了以下代码......
- (void)keyDown:(NSEvent *)theEvent {
NSLog(@"keyDown!");
if ([theEvent modifierFlags] & NSAlternateKeyMask) {
NSLog(@"Alt key Down!");
}
else
[super keyDown:theEvent];
}
按下非修改键时,我收到了关键事件! 当我按下alt + z时,我也收到“Alt Key is Down”(alt + non-modifierkey)。
这里的问题是我想在单独按下alt / option键时处理事件,而不与其他键组合并且-keyDown:不会被调用!我错过了什么?
...谢谢
答案 0 :(得分:7)
您可以单独使用Alt / Option键in -flagsChanged:
而不是-keyDown:
。
-(void)flagsChanged:(NSEvent*)theEvent {
if ([theEvent modifierFlags] & NSAlternateKeyMask) {
NSLog(@"Alt key Down (again)!");
}
}
答案 1 :(得分:0)
你可以这样做:
-(void)flagsChanged:(NSEvent*)theEvent {
[super flagsChanged:theEvent];
if ((([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) & NSAlternateKeyMask) > 0) {
NSLog(@"Alt key Down (again)!");
}
}