检查SwiftUI(macOS)中选项键的状态

检查SwiftUI(macOS)中选项键的状态,swiftui,Swiftui,我正在寻找一种方法来检查macOS上SwiftUI中选项键的状态 也就是说,根据是否按下选项键,我希望在.ontapsignature关闭中执行不同的操作。macOS only SwiftUI具有。modifiersmodifier可指定事件修饰符,因此您的案例如以下示例所示: Rectangle() .fill(Color.yellow) .frame(width: 100, height: 40) .gesture(TapGesture().modifiers(.op

我正在寻找一种方法来检查macOS上SwiftUI中选项键的状态


也就是说,根据是否按下选项键,我希望在
.ontapsignature
关闭中执行不同的操作。

macOS only SwiftUI具有
。modifiers
modifier可指定
事件修饰符,因此您的案例如以下示例所示:

Rectangle()
    .fill(Color.yellow)
    .frame(width: 100, height: 40)
    .gesture(TapGesture().modifiers(.option).onEnded {
        print("Do anyting on OPTION+CLICK")
    })
    .onTapGesture {
        print("Do anyting on CLICK")
    }

在手势上使用
修改器
方法可能是首选,但实际上也可以使用
CoreGraphics
中的
CGEventSource
测试选项键本身:

导入核心图形
扩展CGKeyCode
{
静态let kVK_选项:CGKeyCode=0x3A
静态let kVK_RightOption:CGKeyCode=0x3D
表示变量:Bool{
CGEventSource.keyState(.combinedSessionState,键:self)
}
静态变量选项按键按下:布尔{
返回Self.kVK_Option.isPressed | | Self.kVK_RightOption.isPressed
}
}
这使您能够在没有
修饰符
属性或方法的上下文中检测选项键(或与此相关的任何其他键)


扩展中的关键代码可以重命名为更快捷的代码,但这些名称可以追溯到经典MacOS的工具箱,并在Macintosh内部定义。我有一个包含所有旧钥匙代码的密码。

查看onCommand修饰符