首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SwiftUI TabView PageTabViewStyle是否阻止更改选项卡?

SwiftUI TabView PageTabViewStyle是否阻止更改选项卡?
EN

Stack Overflow用户
提问于 2021-01-01 02:28:31
回答 2查看 1.6K关注 0票数 8

我在PageViewTabStyle的SwiftUI中有一个TabView,所以我可以在页面之间滑动。我希望有一个“锁定”当前视图的设置,这样用户就不能滑动。搜索和阅读文档对我来说并不是什么显而易见的东西,所以我希望so上的大师可以帮助我。

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

代码语言:javascript
运行
复制
TabView {
   ForEach(0..<5) { idx in
      Text("Cell: \(idx)")
   }
}
.tabViewStyle(PageTabViewStyle())

我已经找到了disabled属性,但是在整个视图上所有的点击事件似乎都被忽略了--我只是想防止用户切换选项卡(或者,在这种情况下,滑动或按下页面点来切换页面)。我尝试了here中的解决方案,其中gesture属性设置为nil,但这似乎并不能真正阻止滑动手势更改页面(尽管indexDisplayMode位很不错!)

任何帮助都是非常感谢的!谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-01-01 02:47:14

参考文献中提到的解决方案是有效的,只是滑动被gesture(DragGesture())而不是gesture(nil)阻止。视图应该是全选项卡-内容-视图范围的,比如

代码语言:javascript
运行
复制
    TabView {
      ForEach(0..<5) { idx in
        Text("Cell: \(idx)")
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .contentShape(Rectangle())
                .gesture(DragGesture())      // this blocks swipe
      }
    }
    .tabViewStyle(PageTabViewStyle())

使用Xcode12.1/ iOS 14.1进行测试

*当然,它可以像在中一样成为有条件的

票数 8
EN

Stack Overflow用户

发布于 2021-07-04 22:49:58

要阻止TabView中的所有滑动手势,您必须使用.simultaneousGesture(DragGesture()),它也会阻止子视图中的所有滑动手势

代码语言:javascript
运行
复制
TabView {
          ForEach(0..<5) { idx in
            Text("Cell: \(idx)")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .contentShape(Rectangle())
                    .simultaneousGesture(DragGesture())
          }
        }
        .tabViewStyle(PageTabViewStyle())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65524458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档