我有以下问题。
在ScrollView
中,我想拖动一个View
。现在,一切都很好,拖动发生了,滚动也发生了。但是一旦我尝试做两者,dragOffset
似乎会保持不变,而不是重置到其初始位置。
更多地是,DragGesture
的onEnded
从未发生。如何阻止这种情况发生并将绿色的Rectangle
重置为其初始位置?
可视化表示
拖动或滚动工作正常。
但是每当我两者兼具时,就会发生这种情况。
演示代码
struct ContentView: View {
@State private var dragOffset: CGSize = .zero
var body: some View {
ScrollView {
Rectangle()
.frame(width: UIScreen.main.bounds.size.width, height: 300)
.foregroundColor(.green)
.offset(x: dragOffset.width)
}
.gesture(DragGesture()
.onChanged { value in
dragOffset = value.translation
}
.onEnded { value in
dragOffset = .zero
}
)
.animation(.default)
}
}
谢谢你!
DragGesture
中添加最小拖动距离来改善了它,像这样:DragGesture(minimumDistance: 20)
。这对我有所帮助,但只是一个半成品修复,因为现在必须拖动超过20才能激活手势。 - Kai ZhengDragGesture(minimumDistance: 1)
同样有效。 - Hai Feng Kao