带箭头键的 SwiftUI 键盘快捷键

dav*_*eme 9 swiftui

I\xe2\x80\x99m 在使用箭头键作为.keyboardShortcut。iOS 应用程序示例:

\n
struct ContentView: View {\n    @State var time: Date = Date()\n    \n    var body: some View {\n        VStack {\n            Button("Press Me") {\n                time = Date()\n            }\n            .keyboardShortcut(KeyEquivalent.rightArrow, modifiers: [])\n        \n            Text("\\(time)")\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这会弹出一个按钮,按下该按钮会更改 中显示的时间text。我应该能够使用键盘上的右箭头键并使其正常工作,但它不能\xe2\x80\x99t。如果我改变keyboardShortcut行更改为:

\n
.keyboardShortcut(KeyEquivalent(\xe2\x80\x9ca\xe2\x80\x9d), modifiers: [])\n
Run Code Online (Sandbox Code Playgroud)\n

一切都按预期进行。您可以按 \xe2\x80\x9ca\xe2\x80\x9d 键,时间会发生变化。如果按住command键,您会看到系统提供的HUD,其中显示“\xe2\x80\x9ca”快捷方式。将其更改为.rightAarrow它会显示HUD,但其中\xe2\x80\x99s是一个封闭的\xe2\x80\ x9c?\xe2\x80\x9d 为快捷方式,按下箭头键时,快捷方式不会\xe2\x80\x99 触发。

\n

(我\xe2\x80\x99m知道我可以使用UIKit。试图理解为什么SwiftUI版本不能\xe2\x80\x99工作。)

\n

Kei*_*thB 6

我正在尝试在我的 MacOS SwiftUI 应用程序中实现相同的目标。以您的代码为例,我.keyboardShortcut(KeyEquivalent.rightArrow, modifiers: [])在 my 之后插入了它Button{},它工作正常。然后我将您的整个代码粘贴到我的 ContentView 中,并且它再次正常工作。我不知道为什么它在我的 MacOS 应用程序中有效,但在您的 iOS 应用程序中无效。