5

如何在用 SwiftUI 编写的 Catalyst- 应用程序中添加触控栏支持?

例如,如果我想在视图中显示一个按钮:

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack{
        #if targetEnvironment(macCatalyst)
            Text("macOS")
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .focusable()
            .touchBar {
                Button(action: {
                    print("tapped")
                }) {
                    Text("TestButton")
                }
            }
        #endif
        Text("iOS")
        }
    }
}

如果我在 macOS 应用程序中使用它,它可以工作,但如果我在 Catalyst 中使用它并添加 targetEnvironment,则会出现错误:

'focusable(_:onFocusChange:)' 在 iOS 中不可用,而 'touchBar(content:)' 在 iOS 中不可用

谢谢你的帮助。

4

2 回答 2

0

您可以添加自定义视图修饰符:

struct TouchBarView: ViewModifier {
    func body(content: Content) -> some View {
        #if os(macOS)
        return content
                .touchBar { ... }
        #else
        return content
        #endif
    }
}

用法:

Text("Text")
    .modifier(TouchBarView())
于 2020-08-14T21:16:04.900 回答
0

改变

#if targetEnvironment(macCatalyst)

#if os(macOS)

macCatalyst必须仍然在 iOS Mac Catalyst 应用程序的环境中,因此手动检查操作系统应该是可靠的。

于 2020-03-11T14:47:09.347 回答