我在我的应用程序中实现了- (void)flagsChanged:(NSEvent *)theEvent
方法。当我按住[alt]键时,它工作正常。该方法仅在按下键时发送,但不在我再次按下时发送。不会调用- (void)keyUp:(NSEvent *)theEvent
。反正有没有看到[alt]键何时被释放?
以下是代码:
- (void)flagsChanged:(NSEvent *)theEvent
{
if([theEvent modifierFlags] & NSAlternateKeyMask)
{
NSLog(@"alt is down!!!");
}
}
答案 0 :(得分:3)
好。我真的需要更多地测试代码。记录NSEvent后,我注意到已经实现了keyUp
方法(感谢Jonathan Grynspan将其指向评论中)。
现在我的代码是:
- (void)flagsChanged:(NSEvent *)theEvent
{
if([theEvent modifierFlags] & NSAlternateKeyMask)
{
NSLog(@"alt is down!!!");
}
else if([theEvent keyCode] == 58)
{
NSLog(@"alt is up!!!");
}
}
这现在运作正常!
答案 1 :(得分:0)
您的代码已损坏,无法正确显示。 NSAlternateKeyNask
已过时。
- (void)flagsChanged:(NSEvent *)theEvent {
if ([theEvent modifierFlags] & NSEventModifierFlagOption) {
NSLog(@"alt is down!!!");
} else if ([theEvent modifierFlags] | NSEventModifierFlagOption) {
NSLog(@"alt is up!!!!!");
}
}
请注意,这些事件将在任何蒙版更改时触发,例如,如果您先按alt
,然后再按cmd
,将有2个“按键下降” alt事件。