By its name, I misunderstood what shouldGroupAccessibilityChildren does the first time I saw it. It can be used for VoiceOver to traverse all items in a view before moving to the next one, instead of grouping as in combining those elements.

Apple remote control app from control centre. In one example VoiceOver traverses the elements from left to right and top to bottom. The order is: Menu, back, volume up, play/pause, volume down. The button for changing the volume are far apart. We could set the property shouldGroupAccessibilityChildren to true for the container views containing the menu and play buttons and the volume up and down buttons. If we do that, the order would be: menu, play/pause, back, volume up, and volume down. It seems much more logical this way.

VoiceOver traverses elements in the natural reading order, from left to right, top to bottom, in left-to-right languages. Sometimes data is displayed in columns, so that order might not be the most logical one.

https://developer.apple.com/documentation/objectivec/nsobject-swift.class/shouldgroupaccessibilitychildren

You may also find interesting...

If you have interactions that are hidden or require complex gestures to be performed or that may conflict with VoiceOver, you need to provide alternative ways of executing these actions. Custom actions can help a lot of times, but not always.

Too much data can overwhelm users. Very little is an incomplete experience. It is hard to find a balance on verbosity and the users may have different preferences. To help with this issue, the AXCustomContent APIs let you mark data as optional.

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.

Created in Swift with Ignite.

Supporting Swift for Swifts