首页 > 解决方案 > SwiftUI 和 tvOS(可聚焦)

问题描述

我知道,SwiftUI 目前处于测试阶段,但我想确保正确使用可聚焦。

实际上,当我在列表中向下滚动时,当列表向下滚动时,焦点项目会跳过 3 或 4 行(向上滚动方向很好)。

您可以在 b4 版本中尝试使用此代码:(编辑:b5 相同)

import SwiftUI

struct TestList: Identifiable {
    var id: Int
    var name: String
}

let testData = [Int](0..<50).map { TestList(id: $0, name: "Row \($0)")  }


struct SwiftUIView : View {
    var testList: [TestList]

    var body: some View {
        List {
            ForEach(testList) { txt in
                TestRow(row: txt)
            }
        }
    }
}

struct TestRow: View {
    var row: TestList

    @State private var backgroundColor = Color.clear

    var body: some View {
        Text(row.name)
        .focusable(true) { isFocused in
            self.backgroundColor = isFocused ? Color.green : Color.blue
            if isFocused {
                print(self.row.name)
            }
        }
        .background(self.backgroundColor)
    }
}

#if DEBUG
struct SwiftUIView_Previews : PreviewProvider {
    static var previews: some View {
        SwiftUIView(testList: testData)
    }
}
#endif

谢谢。

标签: tvosswiftui

解决方案


它终于在 Xcode 11 GM 上为我工作了......


推荐阅读