我有一个按钮,当用户按下键盘上的空格键时应该执行其操作。听起来很简单,但下面的代码不起作用:
struct ContentView: View {
var body: some View {
Button("Quick Look") {
print("pressed")
//quickLookURL = ...
}
.keyboardShortcut(KeyEquivalent.space)
}
}
有趣的是,如果我使用KeyboardShortcut,它就可以工作:
.keyboardShortcut(KeyboardShortcut(" ", modifiers: []))
这是为什么?
extension View {
public func keyboardShortcut(_ key: KeyEquivalent, modifiers: EventModifiers = .command) -> some View
public func keyboardShortcut(_ shortcut: KeyboardShortcut) -> some View
}
public struct KeyboardShortcut : Sendable {
public init(_ key: KeyEquivalent, modifiers: EventModifiers = .command, localization: KeyboardShortcut.Localization)
}
keyboardShortcut 的修饰符有一个默认值 .command。 KeyboardShortcut 的 init 也有一个默认值,即 .command 。
因此,如果您不需要修饰符,则需要显式为其提供一个空数组,否则它将采用 .command 作为默认值。