Dov*_*Dov 3 keyboard macos cocoa drag-and-drop dock
我的Cocoa应用程序支持将文件拖放到Dock图标上,但我想要根据是否按下修改键(命令,选项等)来执行不同的行为.
我尝试检查modifierFlagsfor currentEvent,但无论是否按下修饰符,它们都是相同的(我正在使用Option键进行测试).
码:
// Code is inside my AppDelegate
- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)files {
BOOL optDown = (([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask)
== NSAlternateKeyMask);
NSLog(@"flags: %u, down? %@", [[NSApp currentEvent] modifierFlags],
optDown ? @"YES" : @"NO");
}
Run Code Online (Sandbox Code Playgroud)
输出(使用Option键关闭文件,然后不丢弃):
flags: 1088, down? NO
flags: 1088, down? NO
Run Code Online (Sandbox Code Playgroud)
预期
flags: <not sure>, down? YES
flags: <different>, down? NO
Run Code Online (Sandbox Code Playgroud)
Nic*_*ley 14
通常,[NSApp currentEvent]如果您的应用程序不在最前面,您不能指望与当前用户状态有任何关系.
要获得硬件状态,无论最前端的应用程序如何都可以使用,GetCurrentKeyModifiers()支持回到10.0(包括64位); [NSEvent modifierFlags]如果您需要10.6,则是另一种选择.
| 归档时间: |
|
| 查看次数: |
2333 次 |
| 最近记录: |