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

如何为ScrollView添加背景且不破坏与TabView联动的回到顶部功能?

ScrollView嵌套TabView时设置背景导致点击Tab返回顶部功能失效

当ScrollView嵌套在TabView中时,点击Tab按钮原本可以触发ScrollView滚动至顶部。但如果为ScrollView设置背景颜色后,该回到顶部的功能会失效。

正常工作的示例代码

import SwiftUI

struct SwiftUIView: View {
  let items = (1...100).map { "Item \($0)" }
  var body: some View {
    TabView {
      Tab("home", systemImage: "house") {
        ScrollView {
          ForEach(items, id: \.self) { item in
            Text(item)
              .frame(maxWidth: .infinity, alignment: .center)
          }
        }
      }
    }
  }
}

#Preview {
  SwiftUIView()
}

未设置背景的SwiftUI视图:底部显示Tab栏,ScrollView中是1到100的列表项,点击Tab按钮可触发列表滚动至顶部。

设置背景后功能失效的代码

import SwiftUI

struct SwiftUIView: View {
  let items = (1...100).map { "Item \($0)" }
  var body: some View {
    TabView {
      Tab("home", systemImage: "house") {
        ScrollView {
          ForEach(items, id: \.self) { item in
            Text(item)
              .frame(maxWidth: .infinity, alignment: .center)
          }
        }
        // 为ScrollView设置背景
        .background(Color.red)
      }
    }
  }
}

#Preview {
  SwiftUIView()
}

设置红色背景的SwiftUI视图:ScrollView背景变为红色,此时点击底部Tab按钮,列表无法滚动回顶部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:18:10