SwiftUI TabView PageTabViewStyle 阻止更改选项卡?

2024-03-11

我有一个TabView在 SwiftUI 中PageViewTabStyle这样我就可以从一页滑动到另一页。我想要一个设置来“锁定”当前视图,这样用户就无法滑动。谷歌搜索和阅读文档并没有给我带来任何明显的结果,所以我希望 SO 上的专家可以帮助我。

简而言之,我的代码看起来像

TabView {
   ForEach(0..<5) { idx in
      Text("Cell: \(idx)")
   }
}
.tabViewStyle(PageTabViewStyle())

我已经找到了disabled属性,但似乎整个视图上的所有点击事件都被忽略 - 我只是想防止用户切换选项卡(或者,在这种特殊情况下,滑动或按下页面点来切换页面)。我已经尝试过解决方案here https://stackoverflow.com/questions/63168014/swiftui-2-0-tabview-disable-swipe-to-change-page哪里的gesture属性设置为nil,但这似乎并没有真正阻止滑动手势更改页面(indexDisplayMode不过,有点不错!)

任何帮助是极大的赞赏!谢谢!


上述参考文献中的解决方案,只是滑动被阻止,而不是被阻止gesture(nil),但是通过gesture(DragGesture())。并且视图应该是全选项卡内容视图范围,例如

    TabView {
      ForEach(0..<5) { idx in
        Text("Cell: \(idx)")
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .contentShape(Rectangle())
                .gesture(DragGesture())      // this blocks swipe
      }
    }
    .tabViewStyle(PageTabViewStyle())

使用 Xcode 12.1 / iOS 14.1 进行测试

* 当然,它可以是有条件的,如https://stackoverflow.com/a/63170431/12299030 https://stackoverflow.com/a/63170431/12299030

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI TabView PageTabViewStyle 阻止更改选项卡? 的相关文章

随机推荐