我的
Alert
应用程序中有一个 SwiftUI
:
.alert("Project Name:", isPresented: self.$alertPresented)
{
TextField("", text: self.$userInput)
/*.onSubmit
{
okButtonPushed()
self.alertPresented = false
}*/
Button("Cancel", role: .cancel) { }
Button("OK")
{
okButtonPushed()
}
.disabled(userInput.isEmpty)//.keyboardShortcut(.return)
}
它正常工作,但我想做的是,当用户在 MacOS 上按下 Return 或 Enter 键时,就像用户单击 OK
Button
一样。我还希望突出显示 OK Button
,以便用户清楚他们可以按回车键/回车键来激活它。
到目前为止我已经尝试了两种不同的方法。首先,我在
.onSubmit
上附加了 TextField
。当我按 Enter 或 Return 时,它可以工作,但不会消除 Alert
(即使我将 $self.alertPresented
设置为 false
。
第二个,我尝试将
.keyboardShortcut(.return)
附加到 OK Button
本身,但这只是出于某种原因突出显示取消 Button
(与我想突出显示 OK Button
的方式大致相同) ,当我按回车键/或输入键时,Alert
消失了,就像有人单击了取消Button
一样。
所以,只是想知道这是否可以采用我上面的格式,其中
Alert
有一个 TextField
,以及何时全部在连接到 .alert
的 Button
外壳中完成。谢谢你。
.defaultAction
键盘快捷键。
默认按钮的标准键盘快捷键,由 Return (↩) 键组成,不含修饰键。
在 macOS 上,默认按钮被指定为特殊颜色。如果为多个控件分配了此快捷方式,则仅强调第一个控件。
.alert("Project Name:", isPresented: self.$alertPresented)
{
TextField("", text: self.$userInput)
Button("OK") { print("OK Pressed!") }
.disabled(userInput.isEmpty)
.keyboardShortcut(.defaultAction)
Button("Cancel", role: .cancel) { }
}
请注意,您应该将“取消”按钮放在“确定”按钮之后。看起来带有
role: .cancel
的按钮也隐式是 .defaultAction
,所以我们需要先放置 OK 按钮才能突出显示它。