【问题标题】:How to tell if a modifier key is down during drop on Dock如何判断在 Dock 上放置期间修饰键是否已按下
【发布时间】:2011-08-25 01:52:33
【问题描述】:

我的 Cocoa 应用程序支持将文件拖放到它的 Dock 图标上,但我想要不同的行为,具体取决于是否按下修饰键(命令、选项等)。

我尝试检查 modifierFlags 中的 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");
}

输出(用 Option 键放下文件,然后不放):

flags: 1088, down? NO
flags: 1088, down? NO

预期

flags: <not sure>, down? YES
flags: <different>, down? NO

【问题讨论】:

    标签: cocoa macos drag-and-drop keyboard dock


    【解决方案1】:

    一般来说,如果您的应用不在最前面,您不能指望[NSApp currentEvent] 与当前用户状态有任何关系。

    要获取硬件状态,不管最前面的应用程序如何,GetCurrentKeyModifiers() 支持回到 10.0(包括 64 位);如果您需要 10.6,[NSEvent modifierFlags] 是另一种选择。

    【讨论】:

    • 谢谢,[NSEvent modifierFlags]完美解决了这个问题(我确实需要 10.6)。
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多