If you need for a view (and all its subviews) not to be focusable by assistive tech like VoiceOver, you can set its accessibilityElementsHidden property to true. This isn't needed very often, but it can be useful for certain custom experiences.

Twitter app in the Notifications section. There are two tabs. One for All, and one for Mentions. The content comes after the tabs in a horizontally scrollable paged view. When the Mentions tab is selected, and the focus is on the Mentions tab, if the user swipes to the right, VoiceOver will look for the next element from top-left to bottom-right. So it may try to focus the first element in the scroll view, which would be the first tweet from the

You may also find interesting...

Creating UIAccessibilityElements, combined with a semanticGroup accessibilityContainerType, can also help you make components as complex as charts accessible. Example from "Bring Accessibility to Charts" WWDC21: https://developer.apple.com/videos/play/wwdc2021/10122/

Custom actions are also great for actions that are executed with a gesture that is overridden by VoiceOver. Think of the unread, flag and archive hidden options that you can make visible by swiping left/right on a message row in the Mail app.

What is the difference between isAccessibilityElement and accessibilityElementsHidden? The first one makes the view not accessible, but its subviews can still be accessible. The second one hides the view and all its subviews from assistive tech.

Created in Swift with Ignite.

Supporting Swift for Swifts