2

我已经- (void)flagsChanged:(NSEvent *)theEvent在我的应用程序中实现了该方法。当我按住 [alt] 键时,它工作正常。该方法仅在按下键时发送,但在我再次松开时不会发送。- (void)keyUp:(NSEvent *)theEvent不会被调用。无论如何可以查看 [alt] 键何时释放?

这是代码:

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

2 回答 2

4

好的。我真的需要更多地测试代码。记录 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!!!");
    }
}

这现在工作正常!

于 2012-08-24T17:27:31.647 回答
0

您的代码因正确的 alt 而损坏。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 个“key down”alt 事件。

于 2019-06-05T14:51:45.837 回答