如何解决如何使用SwiftUI在TabView中禁用垂直滚动?
我已经在应用程序中设置了TabView,以便可以在多个页面之间水平滑动,但是我也可能会出现不必要的垂直滚动,从而产生反弹效果。如何禁用此垂直滚动?
我的代码:
struct ContentView: View {
@State private var currentTabIndex: Double = 0
var body: some View {
VStack {
TabView(selection: $currentTabIndex) {
Text("Text n°1")
.tag(0)
Text("Text n°2")
.tag(1)
}
.border(Color.black)
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
}
}
}
解决方法
Xcode 12.4 仍然存在问题。
我设法通过将 TabView 包装在 ScrollView 中并使用 alwaysBounceVertical
属性设置为 false 来解决该问题,如下所示:
ScrollView(.horizontal) {
TabView {
///your content goes here
}
.tabViewStyle(PageTabViewStyle())
}
.onAppear(perform: {
UIScrollView.appearance().alwaysBounceVertical = false
})
.onDisappear(perform: {
UIScrollView.appearance().alwaysBounceVertical = true
})
,
我有同样的问题。这不是一个确切的解决方案,但是您可以关闭在滚动视图(在TabView中使用)的弹跳功能。只要TabView中的项目不大于TabView框架,它的作用就好像您禁用了垂直滚动。
我会在.onAppear或您的init函数中称其为
.onAppear(perform: {
UIScrollView.appearance().bounces = false
})
注意:这将禁用应用程序中所有滚动视图的弹跳功能。因此,您可能需要重新启用.onDisappear。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。