Command-Key-Up Cocoa

时间:2013-06-08 15:24:23

标签: objective-c cocoa

我正在尝试模仿cmd-tab键盘快捷键的功能,用户可以在应用程序之间切换某个键,然后当它们释放命令时会发生某些事情。

我现在正在使用此代码,但它只能检测keydown。我需要这个来解决关键问题

- (void)flagsChanged:(NSEvent *)theEvent {

if ([theEvent modifierFlags] & NSCommandKeyMask) {
    NSLog(@"Do my stuff here");
}
}

由于

1 个答案:

答案 0 :(得分:9)

根据文件:

  

通知接收者用户已按下或已释放修饰符   键(Shift,Control等)。

这里需要做的是当你得到命令键关闭的事件时,需要在某处设置一个标志,并在后续调用中检查命令键是否缺失。

例如,假设您有一个名为_cmdKeyDown的ivar:

- (void)flagsChanged:(NSEvent *)theEvent
{
    [super flagsChanged:theEvent];

    NSUInteger f = [theEvent modifierFlags];
    BOOL isDown = !!(f & NSCommandKeyMask);
    if (isDown != _cmdKeyDown)
    {
        NSLog(@"State changed. Cmd Key is: %@", isDown ? @"Down" : @"Up");
        _cmdKeyDown = isDown;
    }
}