Skip to content

Commit abfb9a5

Browse files
committed
Update RangeSlider.swift
1 parent 72fd0f0 commit abfb9a5

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

RangeSlider/RangeSlider.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ struct RangeSlider: View {
1212
@Binding var upperValue: Double
1313
@State private var lowerLast: Double = 0.0
1414
@State private var upperLast: Double = 1.0
15+
@State private var updating: Bool = false
1516

1617
var body: some View {
1718
RoundedRectangle(cornerRadius: 4)
@@ -28,31 +29,44 @@ struct RangeSlider: View {
2829
.gesture(
2930
DragGesture(minimumDistance: 0)
3031
.onChanged { value in
32+
updating = true
3133
let delta = value.translation.width / geometry.size.width
3234
lowerValue = min(max(lowerLast + delta, 0), upperLast)
3335
}
3436
.onEnded { value in
3537
let delta = value.translation.width / geometry.size.width
3638
lowerValue = min(max(lowerLast + delta, 0), upperLast)
3739
lowerLast = lowerValue
40+
updating = false
3841
}
3942
)
43+
.onChange(of: lowerValue) { _, newValue in
44+
if !updating {
45+
lowerLast = newValue
46+
}
47+
}
4048

4149
RangeSliderHandle()
4250
.position(CGPoint(x: upperValue * geometry.size.width, y: 2.0))
4351
.gesture(
4452
DragGesture(minimumDistance: 0)
4553
.onChanged { value in
54+
updating = true
4655
let delta = value.translation.width / geometry.size.width
4756
upperValue = min(max(upperLast + delta, lowerLast), 1)
48-
4957
}
5058
.onEnded { value in
5159
let delta = value.translation.width / geometry.size.width
5260
upperValue = min(max(upperLast + delta, lowerLast), 1)
5361
upperLast = upperValue
62+
updating = false
5463
}
5564
)
65+
.onChange(of: upperValue) { _, newValue in
66+
if !updating {
67+
upperLast = newValue
68+
}
69+
}
5670
}
5771
}
5872
}

0 commit comments

Comments
 (0)