我在SwiftUI的泡菜中,有一个垂直的ScrollView,其中包含垂直堆叠的按钮。当我开始滚动时,有两个结果:
我的问题:在上述情况(1.)中,有什么方法可以防止按钮动作被触发,即禁用按钮或仅在滚动停止/静止不动时才触发该动作吗?
ScrollView(.vertical) {
ForEach(0...5, id: \.self) { i in
VStack(alignment: .leading, spacing: 15) {
Button(action: {
print("selected")
}) {
Text("Button \(i)")
}
}
}
}
我尝试在代码块后标记.gesture()
,但是它只能识别DragGesture().onChanged()
,而不能识别DragGesture().onEnded()
。我已经考虑过尝试检测拖动起点的位置以及与屏幕上所有按钮的位置进行交叉引用的位置,但这似乎有点多余。
任何帮助,建议或替代方案都将受到赞赏!
答案 0 :(得分:2)
尝试使用视图而不是按钮。带有点击手势和(也许)手势遮罩。