You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI tvOS LazyVGrid焦点导航问题:无正下方项目时无法下移

SwiftUI tvOS LazyVGrid 焦点跳转异常问题

开发SwiftUI tvOS应用时,采用设置为.adaptive(minimum: 300)的LazyVGrid布局,多数场景下焦点行为正常,但存在以下问题:

  • 当某个项目(如item-9)没有正下方项目时,向下移动焦点会出现卡顿
  • 当前焦点在item-9(红色高亮),预期向下滑动时焦点应跳转至最近的下方可用项目item-12,但实际焦点停留在item-9,无法下移

焦点异常参考截图

当前代码实现

主视图代码

struct AdaptiveLazyHGridView: View {
    let items = Array(1...22)
    var adaptiveColumns = [GridItem(.adaptive(minimum: 300.0), spacing: 10)]

    var body: some View {
        VStack{
            ScrollView(.vertical) {
                LazyVGrid(columns: adaptiveColumns) {
                    ForEach(0 ..< 13) { item in
                        Button(action: {
                            
                        }) {
                            ZStack{
                                FocusableRectangle()
                                Text("item - \(item)")
                            }
                        }.buttonStyle(CardButtonStyle())
                    }
                }.padding(40)
            }
        }
    }
}

焦点可响应矩形视图代码

struct FocusableRectangle: View {
    @Environment(\.isFocused) var isFocused: Bool
    @State var color = Color.blue
    
    var body: some View {
        Rectangle()
            .fill(color)
            .frame(width: 300.0, height: 200.0)
            .onChange(of: isFocused) {
                color = isFocused ? Color.red : Color.blue
            }
    }
}

内容的提问来源于stack exchange,提问作者Shabnam Siddiqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:03:22