相关疑难解决方法(0)

SwiftUI:VStack/HStack/ZStack 拖动手势不起作用

我不明白为什么DragGesture在 VStack/HStack/ZStack 上不起作用。考虑以下简单示例:

struct ContentView: View {
    @State private var offset = CGSize.zero

    var body: some View {
        VStack {
            Text("Hello World!")
        }
        .frame(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        .edgesIgnoringSafeArea(.all)
        .offset(y: offset.height)
        .gesture(DragGesture()
            .onChanged { val in
                self.offset = val.translation
            }
            .onEnded { val in
                self.offset = .zero
            }
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望整个视图根据offsetvar上下移动(由拖动手势改变)。但是,即使我写.gesture上的修饰VStack,甚至如果VStack是全屏幕(得益于.frame修改)拖动动作将不会在工作VStack。该手势仅在我拖动“Hello world”文本时有效,但如果我拖动到外部Text(但仍在全屏内部VStack)则无响应。有任何想法吗?谢谢。

ios swift swiftui

8
推荐指数
2
解决办法
2717
查看次数

SwiftUI TabView PageTabViewStyle 阻止更改选项卡?

TabView在 SwiftUI 中有一个,PageViewTabStyle所以我可以在页面之间滑动。我想要一个将当前视图“锁定”到位的设置,因此用户无法滑动。谷歌搜索和阅读文档对我来说没有任何明显的意义,所以我希望 SO 上的大师可以帮助我。

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

TabView {
   ForEach(0..<5) { idx in
      Text("Cell: \(idx)")
   }
}
.tabViewStyle(PageTabViewStyle())
Run Code Online (Sandbox Code Playgroud)

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

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

ios swiftui swiftui-tabview

7
推荐指数
2
解决办法
1177
查看次数

iOS14 SwiftUI 如何在 TabView 上禁用滚动

TabView(selection: $vm.selectedTab) {
   PlanCard_PositiveDay(vm: vm).tag(0)
   PlanCard_CountdownDay().tag(1)
   PlanCard_Basalkcal().tag(2)
   PlanCard_ActivityDiet().tag(3)
   PlanCard_Schedule().tag(4)
   PlanCard_WeightTarget().tag(5)
}
.tabViewStyle(PageTabViewStyle.init(indexDisplayMode: .never))
Run Code Online (Sandbox Code Playgroud)

我使用带有 PageTabViewStyle 的 TabView 来构建 pageView,但我想单击某个按钮来更改位置,而不是自动滚动以使用手指手势更改位置,因此我想禁用自动滚动,如何更新我的代码以实现此目的

谢谢!

swiftui swiftui-tabview

6
推荐指数
1
解决办法
1062
查看次数

在 SwiftUI 2.0 中禁用选项卡视图滑动以更改页面

我在 SwiftUI 应用程序中使用选项卡视图。我想禁用其向左滑动并写入以移至其他页面。我检查了这个答案,也检查了这个,但没有一个有效。他们正在使用

.gesture(DragGesture())

这将禁用向左滑动。我想禁用向左和向右滑动。

我也尝试过:

.禁用(真)

这会禁用整个视图。我的视图上有一些按钮可以执行一些任务。这也让他们失去了能力。

我的代码是:

@State var selectedIndex = 0

var body: some View {

 TabView(selection: $selectedIndex) {
                
                FirstView().tag(0).gesture(DragGesture())
                
                SecondView().tag(1).gesture(DragGesture())
                
                ThirdView().tag(2).gesture(DragGesture())
                
            }.tabViewStyle(.page(indexDisplayMode: .never))
    }
Run Code Online (Sandbox Code Playgroud)

我的FirstView代码是:

func firstView() -> some View {
        
        VStack(alignment: .leading) {
     
            HStack {
                
                Text("Is this a live claim?")
                    .font(.custom(InterFont.bold.rawValue, size: 24))
                
                Spacer()
                
            }.padding()
            
            
            Spacer()
            
            BlueButton(title: "Continue") {
                
               print("pressed")
            }.padding()
            
        }.ignoresSafeArea(edges: .top)
    }
Run Code Online (Sandbox Code Playgroud)

我的SecondView代码是:

func …
Run Code Online (Sandbox Code Playgroud)

tabview swipe-gesture swift swiftui swiftui-tabview

4
推荐指数
1
解决办法
4149
查看次数

标签 统计

swiftui ×4

swiftui-tabview ×3

ios ×2

swift ×2

swipe-gesture ×1

tabview ×1