SwiftUI:为什么我的按钮没有响应带有 KeyEquivalent 的 .keyboardShortcut 修饰符?

问题描述 投票:0回答:1

我有一个按钮,当用户按下键盘上的空格键时应该执行其操作。听起来很简单,但下面的代码不起作用:

struct ContentView: View {
    var body: some View {
        Button("Quick Look") {
            print("pressed")
            //quickLookURL = ...
        }
        .keyboardShortcut(KeyEquivalent.space)
    }
}

有趣的是,如果我使用KeyboardShortcut,它就可以工作:

 .keyboardShortcut(KeyboardShortcut(" ", modifiers: []))

这是为什么?

macos swiftui keyboard-shortcuts
1个回答
0
投票
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 作为默认值。

© www.soinside.com 2019 - 2024. All rights reserved.