首页 > 解决方案 > SwiftUI 中与 Slider 对象的手势冲突

问题描述

我有一个使用 SwiftUI 的 iOS 应用程序。它有我可以滑动的页面(使用 SwiftUIPager)。这工作得很好,但我在某些页面上有一个 Slider 对象,这就是出现问题的地方。移动滑块与页面的滑动手势冲突,这不是我想要的。我应该能够在不移动基础页面的情况下移动滑块。

这是我的代码:

import SwiftUI
import CoreData
import SwiftUIPager


struct XplainString: Identifiable {
    var id:Int //{return id}
    var value:String
}


struct PageView: View {
    .....
    @StateObject var page:Page
    .....
    
    var body: some View {
        Pager(page: self.page,
              data: self.itemsList,
              id: \.self) { page in
                self.pageBlock(page)
        }
        .swipeInteractionArea(.allAvailable)
    }
    
    
    func pageBlock(_ page: PageList) -> some View {
        VStack {
            .....
            SliderBlockView()
                .padding(.bottom, 17)
        }
    }
}


struct SliderBlockView: View {
    .....
    @State private var sndSpeed = 100.0

    var body: some View {
        VStack {
            Slider(value: Binding(get: {self.sndSpeed},
                                  set: {newValue in self.sndSpeed = round   (newValue)}),
                   in: 0...100)
                .frame(width: 200, height: 40, alignment: .center)
                .background(Color.gray)
                .padding(.horizontal, 3.0).padding(.vertical, 2.0)
                .overlay(RoundedRectangle(cornerRadius: 15.0)
                    .stroke(lineWidth: 7.0)
                            .foregroundColor(Color.gray))
                .padding(.horizontal, 20.0).padding(.top, 20.0)
            
            HStack {
                .....
            }
        }
    }
}

标签: iosswiftuislidergesture

解决方案


推荐阅读