objective-c - Command-Key-Up cocoa

标签 objective-c cocoa

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

我现在正在使用这段代码,但它只能检测按键按下。我需要这个来触发

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

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

谢谢

最佳答案

根据文档:

Informs the receiver that the user has pressed or released a modifier key (Shift, Control, and so on).

这里需要做的是,当你得到command键按下的事件时,你需要在某处设置一个flag,在后续的调用中,检查是否没有command键被按下。

例如,假设您有一个名为 _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;
    }
}

关于objective-c - Command-Key-Up cocoa ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000983/

相关文章:

ios - UINavigationController 添加 subview

ios - PFLogInViewController logInView.usernameField.attributedPlaceholder 不见了

cocoa - 您可以从 Mac 应用程序中安装 Safari 扩展吗?

ios - youtube 收到错误呈现模板 : Error Domain=NSCocoaErrorDomain Code=258

objective-c - 如何获取粘贴板条目的类型?

swift - NSOutlineView 列不排序

xcode - macOS 10.10 中的 UI 布局问题(适用于 macOS 10.12)

objective-c - 在 OS X Mountain Lion 上访问 Facebook 帐户

swift - CABasicAnimation 忽略持续时间

objective-c - 使用 NSEvent 在 OS X 上捕获其他鼠标按钮事件