gpt4 book ai didi

macos - 检查 keyDown event.modifierFlags 产生错误

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:57 26 4
gpt4 key购买 nike

我继承了 NSTextView 并重写了 keyDown。我想检测命令键组合。例如,Command-L。

Apple's documentation表示您只是使用 NSEventModifierFlags.CommandKeyMask 修饰符标志(在传递的 NSEvent 中)。

当我这样做时:

let ck = NSEventModifierFlags.CommandKeyMask

我收到一个奇怪的错误:

Binary operator '&' cannot be applied to two 'NSEventModifierFlags' operands.

这是怎么回事?这是 swift 2.0,xcode 7。

谢谢!

最佳答案

Apple's documentation indicates that you simply and the modifier flags

文档仍然指的是 C 和 Objective-C。 swift 使用 OptionSetType ,它不使用按位运算符来检查标志。

相反,使用 contains() 方法检查一个或多个标志:

    if theEvent.modifierFlags.contains(.CommandKeyMask) {
NSLog("command key down")
}

if theEvent.modifierFlags.contains(.AlternateKeyMask) {
NSLog("option key down")
}

if theEvent.modifierFlags.contains([.CommandKeyMask, .AlternateKeyMask]) {
NSLog("command and option keys down")
}

要检查单个键,请使用 intersect 过滤掉任何不需要的标志,然后使用 == 检查单个标志:

    let modifierkeys = theEvent.modifierFlags.intersect(.DeviceIndependentModifierFlagsMask)

if modifierkeys == .CommandKeyMask {
NSLog("Only command key down")
}

关于macos - 检查 keyDown event.modifierFlags 产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158513/

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