我在全局垂直列表中有多个可滚动水平列表,并且很难管理焦点更改。
我有两个主要问题:
当一个视图下面没有另一个视图时,底部手势不会更新焦点。我希望焦点移动到下面的视图附近。在我的 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)