Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Accessible iOS Apps: Up To 11!

Accessible iOS Apps: Up To 11!

Let’s go on a journey to create, not just accessible iOS apps, but awesome accessible experiences that absolutely all your users will be able to use and love. How do we bring VoiceOver's support to the next level? How should we deal with Dynamic Type, so they can choose the font size? How can we support Smart Invert Colors? What about Reduce Motion, or Reduce Transparency? What is the Rotor? What can we do to improve the user's experience with Voice Control and Switch Control? And, how we can test all these features? We'll try to answer all these questions to help you bring the accessibility levels of your iOS app up to eleven!

Daniel Devesa

October 23, 2020
Tweet

More Decks by Daniel Devesa

Other Decks in Programming

Transcript

  1. 0 - Starting from zero #accessibilityUpTo11 “Conference Name. #a11yTo Conf.

    Text Field. Double tap to edit.” Label Value Trait Hint VoiceOver
  2. accessibleView.isAccessibilityElement = true accessibleView.accessibilityLabel = NSLocalizedString(“stringKey”, comment: “”) accessibleView.accessibilityTraits =

    UIAccessibilityTraitButton accessibleView.accessibilityValue = “A value” accessibleView.accessibilityHint = “Does something.”
  3. #accessibilityUpTo11 1 - Labelling Correctly 4d “Four d” “Four days

    ago” 3h 24m “Three h twenty-four meters” “Three hours twenty-four minutes” Mon “Mon” “Monday” Most read “Most read” “Most red”
  4. #accessibilityUpTo11 2 - Go to Section Two… Step 1 -

    Show the Rotor Step 2 - Navigate From Artists to Genres: 10 flicks to the right vs 1 swipe down
  5. let announcementAttributes = [NSAttributedString.Key.accessibility SpeechQueueAnnouncement: true] let announcementString = NSAttributedString(string:

    notificationView.accessibilityLabel, attributes: announcementAttributes) UIAccessibility.post(notification: .announcement, argument: announcementString)
  6. if UIAccessibility. shouldDifferentiateWithoutColor { addColorSymbolsToCards() } NotificationCenter.default. addObserver(self, selector: #selector(addColorSymbolsToCards),

    name: NSNotification.Name(rawValue: UIAccessibility. differentiateWithoutColorDidChangeNo tification), object: nil)
  7. 5 - Accessibility Customizations #accessibilityUpTo11 Reduce Transparency Reduce Motion Bold

    Text On/Off Switch Labels Button Shapes Prefer Cross-Fade Transitions
  8. 6 - Custom Actions #accessibilityUpTo11 From 1st post to 3rd

    post: → User → Text → Repost → Like → Share → User → Text → Repost → Like → Share → 11 Swipes (+ redundant information) vs 3 Swipes vs → User + Text → User + Text →
  9. if traitCollection .preferredContentSizeCategory .isAccessibilitySizeCategory { cell = tableView .dequeueReusableCell( withIdentifier:

    “alternativeCellId”, for: indexPath) } else { cell = tableView .dequeueReusableCell( withIdentifier: “defaultCellId”, for: indexPath) }
  10. #accessibilityUpTo11 Accessibility → Up to 11! Dani Devesa (@dadederk) GitHub

    code examples: https://github.com/Apress/developing-accessible-iOS-apps