Abstracting your interface in a way that can offer multiple input and output mechanisms is key when developing software with an accessibility mindset. Apple has brought this to the next level in visionOS.

Create accessible spatial experiences

Drawing of the new Apple Vision Pro device. There are arrows coming out of it pointing to different interaction mechanisms, including: eye tracking, gestures, VoiceOver (and its direct gesture mode), Dwell Control, Pointer Control (that works with eyes, hand, wrist and index finger), and Switch Control. Drew Haas, engineer on the accessibility team at Apple says in the WWDC session: Allow multiple avenues for physical interaction. Plan and design for your app to support different inputs. This is the best way to ensure you don’t accidentally exclude people.

You may also find interesting...

With accessibilityRepresentation(representation:), you can create a custom component and it can be perceived by assistive technologies as the view you pass as representation. No need to manually configure accessibility attributes. It is one of the most interesting additions to SwiftUI to help you develop accessible UI components. If your custom component behaves similarly to a native one, this is the way to go. https://developer.apple.com/documentation/swiftui/view/accessibilityrepresentation(representation:)

@NSSpain has a great history of having amazing accessibility talks in their schedule! “Accessibility in the Real World”, by @Sommer: https://vimeo.com/235317172 “How to build an app for everyone”, by @NovallSwift: https://vimeo.com/362163043 The super fun "Choose your own SwiftUI adventure - 3 Accessibility", by @twostraws and @PinkerStraws: https://vimeo.com/481768105 And, of course, this year's great "Bas: My Accessibility Story", by @basthomas: https://vimeo.com/751176747

Guidelines from Apple: Begin with a verb that explains the results of the action. Avoid using the imperative form of a verb because that can make it sound like a command. Don’t include the action type. Don’t include the control. https://developer.apple.com/documentation/objectivec/nsobject-swift.class/accessibilityhint

Created in Swift with Ignite.

Supporting Swift for Swifts