0

我已经为 Swiftui 的滚动视图实现了一个 viewmodifier,以禁用内置滚动,以允许应用自定义拖动手势。修饰符效果很好。

问题是 viewmodifier 被应用于应用程序中的其他滚动视图,而不仅仅是那些以 .modifier 为目标的滚动视图!我尝试了简单的可能解决方案,例如滚动视图的唯一 ID,但无济于事。

有谁知道这种行为是否可以修复?

ScrollViewReader { (proxy: ScrollViewProxy) in
     ScrollView(.horizontal) {
         LazyHGrid(rows: rows, alignment: .center, spacing: cellSpacing) {
              ForEach(Assets, id: \.self) { asset in
                   AssetView(asset)
              }
          }.transition(.asymmetric(insertion: .identity, removal: .identity))
                    .offset(x: initialOffset.width + x.width)
      }
      .id("AssetDetail")
      .modifier(DetailScrollViewModifier())
      .gesture(DragGesture(minimumDistance: 30, coordinateSpace: .local)......
}

struct DetailScrollViewModifier: ViewModifier {
    init() {
        UIScrollView.appearance().isUserInteractionEnabled = false
        UIScrollView.appearance().isScrollEnabled = false
        
    }

    func body(content: Content) -> some View {
        return content
    }   
}

非常感谢

4

1 回答 1

-1

尝试这个

ScrollView(.vertical, showsIndicators: false) {
   VStack {
      // Your Code
   }
}
.onAppear {
    // set
    UIScrollView.appearance().isUserInteractionEnabled = false
    UIScrollView.appearance().isScrollEnabled = false
}
.onDisappear {
    // reset
    UIScrollView.appearance().isUserInteractionEnabled = true
    UIScrollView.appearance().isScrollEnabled = true   
}
于 2021-12-27T09:52:04.677 回答