如果 Button 具有 buttonStyle,则 SwiftUI 的 keyboardShortcut 不起作用
SwiftUI's keyboardShortcut is not working if Button has a buttonStyle
我的代码:
Button(action: {
AudioServicesPlaySystemSound(1026)
isActive.toggle()
}){
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
在此阶段,keyboardShortcut 可以使用,但是当我添加 buttonStyle 时,keyboardShortcut 无法使用
带有 buttonStyle 的代码:
Button(action: {
AudioServicesPlaySystemSound(1026)
isActive.toggle()
}){
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.buttonStyle(PlainButtonStyle())
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
在 macOS 12.beta、xcode 13.beta、目标 ios 14.7 和 MacCatalyst 12 上对我来说效果很好。在 macOS 12 MacCatalyst 应用程序上测试。您使用的是什么系统?
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
Button(action: {
print("---> button clicked")
}) {
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.buttonStyle(PlainButtonStyle())
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
}
}
我遇到了同样的问题,但如果我使用 BorderlessButtonStyle()
而不是 PlainButtonStyle
,对我有用。
我的代码:
Button(action: {
AudioServicesPlaySystemSound(1026)
isActive.toggle()
}){
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
在此阶段,keyboardShortcut 可以使用,但是当我添加 buttonStyle 时,keyboardShortcut 无法使用 带有 buttonStyle 的代码:
Button(action: {
AudioServicesPlaySystemSound(1026)
isActive.toggle()
}){
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.buttonStyle(PlainButtonStyle())
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
在 macOS 12.beta、xcode 13.beta、目标 ios 14.7 和 MacCatalyst 12 上对我来说效果很好。在 macOS 12 MacCatalyst 应用程序上测试。您使用的是什么系统?
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
Button(action: {
print("---> button clicked")
}) {
HStack{
Image(systemName: "trash")
Text("delete")
}
}
.buttonStyle(PlainButtonStyle())
.foregroundColor(.red)
.font(.body)
.keyboardShortcut("b",modifiers: [])
}
}
我遇到了同样的问题,但如果我使用 BorderlessButtonStyle()
而不是 PlainButtonStyle
,对我有用。