With VoiceOver, you can swipe up/down to increase/decrease the value of adjustable components. You need to implement accessibilityIncrement() and accessibilityDecrement() accordingly, and configure an accessibility value that makes sense.

A component lets you rate the Regency Cafe restaurant from one, to five thumbs up. It is currently at 5. It shows that swiping up will increase value and swiping down will decrease it. The code shows how you can override accessibility increment and decrement to adjust the accessibility value to something like

Example code in the image:

override func accessibilityIncrement() {
    guard value < 5 else { return }
    value += 1
    accessibilityValue = "\(value) of 5"
    sendActions(for: .valueChanged)
}

override func accessibilityDecrement() {
  guard value > 1 else { return }
  value -= 1
  accessibilityValue = "\(value) of 5"
  sendActions(for: .valueChanged)
}

Links to the official documentation:

* accessibilityincrement()

* accessibilitydecrement()

You may also find interesting...

If you are developing a custom component, that can change value, chances are that it will need the adjustable accessibility trait (VoiceOver will say: "Adjustable"). Think of a component that lets you rate from one to five thumbs up (or stars).

UISliders are adjustable, and its default accessibility value is represented in percentages. But that's not always the best format to express a value. Consider a slider to select a distance radius. Miles or km seem a more appropriate unit. Example code in the image: ```swift override var accessibilityValue: String? { get { let formatter = MeasurementFormatter() let measurement = Measurement( value: Double(value), unit: .kilometers ) formatter.unitStyle = .long return formatter.string(from: measurement) } set {} } ```

VoiceOver will traverse elements from left-right, and from top-bottom. If for any reason you need to change that order, in SwiftUI you can change the accessibility sort priority. A higher priority number in the container means it will go first.

Created in Swift with Ignite.

Supporting Swift for Swifts