Day 33

Implement accessibilityIncrement and Decrement

20 Jun 2022

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()

Some of you have asked me how you can support what I do. This would really help, and would be hugely appreciated:

  • Find these posts useful? Share them at work, on social media, or with anyone that might find them interesting. Let's spread the word!

  • Check out any of my apps or games: Xarra!, RetroRapid!, or Mestre!.

    • A download and a review go a long way. They're free by default. On the App Store, ratings and reviews really help more people discover them.

    • Finding any of them useful? If so, and if you can afford it, purchasing lifetime access to all features or subscribing lets me buy the coffee that keeps me caffeinated. Caffeine keeps me going to maintain the apps, bring in new features that I hope you'll love, and keep writing.

You may also find interesting...

There are details conveying important information that are shown visually with little icons, badges, progress bars, and similar cues that can be missed when they are not added as part of the accessibility label or accessibility value of a UI component.

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 {} } ```

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).


Content © Daniel Devesa Derksen-Staats on Accessibility up to 11! is licensed under CC BY 4.0. License details