gpt4 book ai didi

cocoa - 如何判断在 Dock 上放置过程中是否按下了修饰键

转载 作者:行者123 更新时间:2023-12-03 16:16:03 26 4
gpt4 key购买 nike

我的 Cocoa 应用程序支持将文件拖放到其 Dock 图标上,但我希望根据是否按住修饰键(Command、Option 等)来实现不同的行为。

我尝试检查 currentEventmodifierFlags,但无论是否按住修饰符,它们都是相同的(我正在使用 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

最佳答案

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

为了获取硬件状态(无论最前面的应用程序如何,该状态都可以工作),GetCurrentKeyModifiers() 支持回溯到 10.0(包括 64 位);如果您需要 10.6,[NSEvent modifierFlags] 是另一个选择。

关于cocoa - 如何判断在 Dock 上放置过程中是否按下了修饰键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5994656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com