Mar*_* T. 8 macos swift swiftui
我正在尝试找到在 macOS 上将 NSMenuItem 与 SwiftUI onCommand 连接的最佳解决方案。
目前我正在做以下事情:
@IBAction func changeColor(_ sender: Any) {
print("Dummy Function")
}
Run Code Online (Sandbox Code Playgroud)
使用 Main.storyboard 中的 First Responder 函数创建并连接一个 NSMenuItem。
将所需的代码添加到我的 SwiftUI 视图中
struct TestView: View {
let changeColor = #selector(AppDelegate.changeColor(_:))
var body: some View {
VStack {
TextField("Text", text: .constant(""))
Text("Hello World!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.onCommand(changeColor) {
print("Change Color Action")
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果 TextField 在我看到打印“更改颜色操作”之前是第一响应者。如果 TextField 之前不是第一响应者,则视图不会成为第一响应者。也许这目前是 Catalina Beta (19A558d) 中的一个错误,因为我也无法专注于工作。
小智 3
我已经能够通过首先创建视图来使其工作focusable
:
struct TestView: View {
let changeColor = #selector(AppDelegate.changeColor(_:))
var body: some View {
VStack {
TextField("Text", text: .constant(""))
Text("Hello World!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.focusable() // Add this
.onCommand(changeColor) {
print("Change Color Action")
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么您还必须选中“键盘系统偏好设置”中的“使用键盘导航在控件之间移动焦点”复选框
归档时间: |
|
查看次数: |
1959 次 |
最近记录: |