我正在尝试模仿 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/