Я пытаюсь найти лучшее решение для подключения NSMenuItem с SwiftUI onCommand в macOS.
В настоящее время я делаю следующее:
- В AppDelegate я создаю фиктивную функциючтобы можно было перечислить функцию Список действий, полученных первым ответчиком.
@IBAction func changeColor(_ sender: Any) {
print("Dummy Function")
}
Создайте и подключите NSMenuItem с функцией 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 был Первым Ответчиком прежде, чем я увижу, что "Изменение Цветного Действия" напечатано.Представление не станет первым ответчиком, если TextField ранее не был первым ответчиком.Возможно, в настоящее время это ошибка в Catalina Beta (19A558d), так как я не могу сосредоточиться на работе.