小编Gon*_*Oin的帖子

如何在 tvOS 上使用 SwiftUI 在多个水平列表之间导航

我在全局垂直列表中有多个可滚动水平列表,并且很难管理焦点更改。

焦点问题

我有两个主要问题:

  • 当一个视图下面没有另一个视图时,底部手势不会更新焦点。我希望焦点移动到下面的视图附近。在我的 GIF 示例中,从第 1 部分的第四个视图到第 2 部分的第二个视图。

  • 当某个视图正下方没有另一个视图时,底部手势会将焦点移动到垂直下方的视图。我希望焦点移动到最近的底部视图。在我的示例中,从第 1 节第三视图到第 2 节第二视图,而不是第 3 节第三视图。

@Environment(\.resetFocus) var resetFocus我在我的 tvOS 应用程序中有很多这个问题的例子,我通过使用 viewModifier和viewModifier的组合来解决这些问题prefersDefaultFocus,但我在这个用例上遇到了困难。

我还看到了关于这个问题的另一个类似的用例,但还没有答案。

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {

            Text("Section 1")

            ScrollView(.horizontal) {
                HStack() {
                    ForEach(0 ..< 10) { item in
                        Button(action: {
                            
                        }) {
                            FocusableRectangle()
                        }.buttonStyle(CardButtonStyle())
                    }
                }.padding(40)
            }
            
            Text("Section 2")

            ScrollView(.horizontal) {
                HStack() {
                    ForEach(0 ..< 2) { item in
                        Button(action: {
                            
                        }) {
                            FocusableRectangle()
                        }.buttonStyle(CardButtonStyle())
                    } …
Run Code Online (Sandbox Code Playgroud)

tvos swiftui

8
推荐指数
2
解决办法
1474
查看次数

标签 统计

swiftui ×1

tvos ×1