Sometimes, you change your app's UI to offer more options as a result of a user's action. And in such cases, it might be a good idea to move VoiceOver's focus to these new options. We can do that by sending a layout changed notification.

Two examples from Apple where they seem to post a layout changed notification to UIAccessibility to move VoiceOver's focus to new options. First one is the reminders app. When double tapping the Date & Time button, there is a new bar that appears on top of it with some predefined date options, and the focus moves to the first option in the bar that appeared. The second is the camera app. At the top of the screen there is a camera controls button that is collapsed by default. If you expand it, some new options appear further down the screen, right after the zoom options, and VoiceOver focus will move to the first one of the new camera controls presented.

You may also find interesting...

Images that convey important information should have the .image accessibility trait and provide an alternative text in the accessibility label. "Image" will be added to VoiceOver's utterance and the user will be able to use Image Explorer. Image Explorer is fairly new, introduced just a couple years ago. But if you were appropriately configuring the image trait, users suddenly got this new functionality for free. Isn't that awesome? With VoiceOver on, open Image Explorer by swiping up in an image and double tapping. It lets users find people (with a basic description and positioning in the photo), objects or text in images, using on-device intelligence. It is very cool!

A common example where you need to manually configure the button accessibility trait is for some table/collection view cells. These tend to be “buttons” that perform an action, like playing music, or bring the user to a different screen.

Support both orientations, if possible. I know not even iOS itself does it, but it hasn't always been like that. You'll create a more robust UI that will be easier to port to iPadOS. And especially, don't force your users to rotate their devices.

Created in Swift with Ignite.

Supporting Swift for Swifts