Как я могу использовать NSTouchBar в приложении SwiftUI для MacOS? - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь добавить поддержку TouchBar для моего приложения MacOS в SwiftUI.

Я обнаружил, что мне нужно позвонить ..

  NSApp.isAutomaticCustomizeTouchBarMenuItemEnabled = true

.. в моем AppDelegate. Но как теперь лучше всего создать TouchBar? Могу ли я добавить его в раскадровку меню моего приложения Ma c или мне нужно создать его программно?

Когда я следую документации Apple, я дохожу до этого момента: 1011 * Вы создаете панель Touch Bar, добавляя ее к контроллеру представления в раскадровке, или создавая ее программно, переопределив функцию makeTouchBar () NSResponder.

Можно ли создать собственный NSViewController, а затем встроить его в представимый NSNiewController?

Может быть, у кого-нибудь есть хороший совет, как я могу поддерживать TouchBar в SwiftUI.

1 Ответ

1 голос
/ 08 мая 2020

Самый простой - просто использовать спецификатор c идентификатор для представления, когда это применимо вашим логом c, как в примере ниже

struct ContentView: View {
  var body: some View {
     SomeView()      // << your view here 
        .touchBar {
            Button("Do") {
               // .. Do something here
            }
        }
  }
}

, чтобы при появлении представления также появлялась соответствующая кнопка Touch Bar .

Для более сложных случаев вы можете увидеть TouchBar и соответствующий добавочный номер

extension View {

    /// Sets the `TouchBar` to be shown in the Touch Bar when applicable.
    @available(iOS, unavailable)
    @available(tvOS, unavailable)
    @available(watchOS, unavailable)
    public func touchBar<Content>(_ touchBar: TouchBar<Content>) -> some View where Content : View

    /// Sets the `TouchBar` content to be shown in the Touch Bar when applicable.
    @available(iOS, unavailable)
    @available(tvOS, unavailable)
    @available(watchOS, unavailable)
    public func touchBar<Content>(@ViewBuilder content: () -> Content) -> some View where Content : View
}
...