flagsChanged是否有KeyUp:方法:?

时间:2012-08-24 17:07:37

标签: objective-c nsresponder

我在我的应用程序中实现了- (void)flagsChanged:(NSEvent *)theEvent方法。当我按住[alt]键时,它工作正常。该方法仅在按下键时发送,但不在我再次按下时发送。不会调用- (void)keyUp:(NSEvent *)theEvent。反正有没有看到[alt]键何时被释放?

以下是代码:

- (void)flagsChanged:(NSEvent *)theEvent
{
    if([theEvent modifierFlags] & NSAlternateKeyMask)
    {
        NSLog(@"alt is down!!!");
    }
}

2 个答案:

答案 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事件。​​