【发布时间】:2020-12-23 22:58:40
【问题描述】:
我已经为 Swiftui 的滚动视图实现了一个视图修改器,以禁用内置滚动,以允许应用自定义拖动手势。修饰符效果很好。
问题是 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
}
}
非常感谢
【问题讨论】:
-
正如你所提到的, UIScrollView.appearance() 总是会影响应用中所有滚动视图的外观。如果您使用手势“滚动”网格,那么您不妨完全移除 ScrollView。
-
非常感谢您的回复。我正在使用滚动视图,因为在没有滚动视图的情况下通过偏移移动时,lazyhstack 似乎不会延迟加载 - 我正在使用延迟将昂贵的加载推迟到需要时。
标签: swiftui scrollview viewmodifier