如何为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
相关产品推荐
相关产品推荐

