【问题标题】:How to properly test against certain values in NSEventModifierFlags via Swift?如何通过 Swift 正确测试 NSEventModifierFlags 中的某些值?
【发布时间】:2023-09-02 01:37:02
【问题描述】:

当使用NSResponder 类的flagsChanged(with event: NSEvent) 方法时,如何针对按下/释放单个修饰键的event.modifierFlags 选项集进行测试?

【问题讨论】:

  • @EricAya 我猜我的问题的标题措辞不当:我应该问如何通过 Swift 正确测试 event.modifierFlags 中的某些值。在 Objective C 中,必须使用按位掩码,但在 Swift 中,这是非惯用的,应该使用 event.modifierFlags.contains(_ member: NSEventModifierFlags),正如我后来发现并在我的回答中指出的那样。这是一个示例,当您需要根据您使用的编程语言以不同方式处理 Cocoa 时。我希望这有助于理解我提出新问题的动机。
  • @Arcanelab 谢谢你的解释。我同意,在这种特定情况下。没问题。

标签: swift macos cocoa


【解决方案1】:

我找到了解决办法,这里我检查shift 键:

override func flagsChanged(with event: NSEvent)
{
    if event.modifierFlags.contains(.shift)
    {
        // shift pressed
    }
    if event.modifierFlags.contains(.shift) == false
    {
        // shift released
    }
}

【讨论】:

    最近更新 更多