无法在Swift 2.0中正确使用NSEventModifierFlags

时间:2015-07-04 18:48:37

标签: xcode swift cocoa swift2

我正在尝试在Xcode 7(7A120f)中开发一个小型Mac应用程序,但它不会让我。据称,此代码段有问题:

let composeHotKey = DDHotKey(keyCode: UInt16(kVK_Return), modifierFlags: NSEventModifierFlags.CommandKeyMask | NSEventModifierFlags.ShiftKeyMask, task: {
    event in

    self.doSomething()
})

尝试编译我的应用程序会导致Xcode构建失败并显示以下错误消息,同时突出显示NSEventModifierFlags.CommandKeyMask | NSEventModifierFlags.ShiftKeyMask部分:

  

二元运算符'|'不能应用于两个NSEventModifierFlags操作数

发生了什么事?根据我在网上找到的所有内容,我应该能够做到这一点。

2 个答案:

答案 0 :(得分:6)

在Swift 2中,像NSEventModifierFlags这样的位字段样式枚举作为OptionSetType的子类型导入Swift。那些不会像C(或Swift 1.x)那样使用bit-twiddling语法。

相反,这些类型使用反映集合逻辑的方法和语法。您可以使用set literal创建一个:

let composeHotKey = DDHotKey(keyCode: UInt16(kVK_Return), modifierFlags: .CommandKeyMask.rawValue | .ShiftKeyMask.rawValue, task: {
    event in

    self.doSomething()
})

答案 1 :(得分:0)

NSEventModifierFlags(rawValue: NSEventModifierFlags.NumericPadKeyMask.rawValue | NSEventModifierFlags.NumericPadKeyMask.rawValue)