invalid-range-values

UISlider()’s maximumValue must be higher than its minimumValue.

Who might be affected
Screen Reader

Description

The minimum value of a slider element (UISlider()) must be greater than its maximum value. To make the slider "disabled" (that is, show the slider but make it active only under certain conditions) you must do it using the "enabled" property.

Quick Fixes

Example 1 UIKit (pass):

1let slider = UISlider()
2 slider.accessibilityLabel = "Volume"
3 slider.minimumValue = 0
4 slider.maximumValue = 100
5 slider.value = 50

Example 2 UIKit (pass):

1let slider = UISlider()
2 slider.accessibilityLabel = "Volume"
3 slider.minimumValue = 0
4 slider.maximumValue = 100
5 slider.value = 50
6 slider.accessibilityValue = "50%"
7

Example 3 UIKit (fail):

1let slider = UISlider()
2 slider.accessibilityLabel = "Volume"
3 slider.minimumValue = 100
4 slider.maximumValue = 0

Example 4 UIKit (fail):

1let slider = UISlider()
2 slider.accessibilityLabel = "Volume"
3 slider.minimumValue = 0
4 slider.maximumValue = 0

Example 5 SwiftUI (fail):

1@State private var value: Float = 50
2 ...
3 UIKSlider(value: $value, minValue: 100, maxValue: 0)
4 .accessibilityLabel("Volume")
5 ...
6 struct UIKSlider: UIViewRepresentable {
7 @Binding var value: Float
8 var minValue: Float
9 var maxValue: Float
10 ...
11 func makeUIView(context: Context) -> UISlider {
12 let slider = UISlider(frame: .zero)
13 slider.minimumValue = minValue
14 slider.maximumValue = maxValue
15 slider.value = value
16 ...
17 return slider
18 }
19 ...
20 }

Example 6 UIKit (make the slider disabled):

1 let slider = UISlider()
2 slider.accessibilityLabel = "Volume"
3 slider.minimumValue = 0
4 slider.maximumValue = 100
5 slider.enabled = false

How Users Are Affected

Screen reader users will hear a value of NaN (not a number). All users won't be able to adjust the value since setting the minimumValue higher than the maximumValue will make the slider look and behave like it is disabled. However, screen readers won't announce it as "disabled”.

WCAG Success criteria

This issue might cause elements to fail one or more of the following Success criteria:
4.1.2 name, role, value (A)