SwiftUI - Как использовать onCommand с NSMenuItem на macOS - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь найти лучшее решение для подключения NSMenuItem с SwiftUI onCommand в macOS.

В настоящее время я делаю следующее:

  1. В 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), так как я не могу сосредоточиться на работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...