【发布时间】:2019-09-22 12:08:45
【问题描述】:
我正在尝试找到在 macOS 上将 NSMenuItem 与 SwiftUI onCommand 连接的最佳解决方案。
目前我正在做以下事情:
- 在 AppDelegate 中,我创建了一个虚拟函数,以便能够列出函数 First Responder 收到的操作列表。
@IBAction func changeColor(_ sender: Any) {
print("Dummy Function")
}
创建一个 NSMenuItem 并将其与 Main.storyboard 中的 First Responder 函数连接。
将所需的代码添加到我的 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")
}
}
}
如果 TextField 是 First Responder,我会看到打印了“更改颜色操作”。 如果 TextField 之前不是 First Responder,则 View 不会成为 First Responder。也许这是目前 Catalina Beta (19A558d) 中的一个错误,因为我也无法集中精力工作。
【问题讨论】:
-
您能否改写您的结尾段落以更清楚地描述问题?
-
嘿,这与您的问题无关,但您是否使用 SwiftUI 构建了您的
NSMenu? -
你有没有想过这个问题?我有类似的情况,很想知道你是否取得了任何进展。