是否可以将滚动更改事件附加到 SwiftUI 中的 TabView? 我想在用户触摸并拖动其中一个 View 时获取滚动位置,该位置的每次更改都会更新。
TabView {
Text("Example 1")
Text("Example 2")
Text("Example 3")
}
.tabViewStyle(PageTabViewStyle())
我尝试添加 DragGesture,但 TabView 不再工作(可能是因为 DragGesture 接管了输入)。我在Apple的文档中也没有看到任何相应的事件。
有谁知道实现这个的方法吗?
干杯..
最佳答案
我们可以用不同的方式跟踪它 - 通过改变 View 坐标(实际上它与拖动平移几乎相同)
这是一个用于一个选项卡的圆顶。使用 Xcode 13.4/iOS 15.5 进行测试
var body: some View {
TabView {
Text("Example 1")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(GeometryReader {
// read and store origin (min X) of page
Color.clear.preference(key: ViewOffsetKey.self,
value: $0.frame(in: .global).minX)
})
Text("Example 2")
Text("Example 3")
}
.tabViewStyle(PageTabViewStyle())
.onPreferenceChange(ViewOffsetKey.self) {
// process here update of page origin as needed
print("Offset >> \($0)")
}
}
关于SwiftUI tabview(滚动)事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73362964/