When working with Dynamic Type, I find it useful to remember that sizes for the different text styles won't scale linearly, nor will they do proportionally between them. For larger dynamic type sizes, styles will come closer together in size.

Graph showing how the text size changes, in points, for the different text styles, as the dynamic type size changes. It is noticeable how styles get closer and closer to each other as the user picks a larger dynamic text size. Tere is always a hierarchy, but for small sizes, it is much more distinguishible. It seems a good strategy though, larger styles are already quite large and smaller ones will benefit from growing even more in order to become readable on mobile deices.

You may also find interesting...

It is possible to use custom fonts and for them to still work great with Dynamic Type. You need to define the default size and use UIFontMetrics to get the scaled font for each one of the styles you'd like to use. https://developer.apple.com/documentation/uikit/uifontmetrics/scaledfont(for:)

To capture the gesture, you can override the accessibilityPerformEscape() function. In there you can dismiss your view, and return true if you could successfully handle it. https://developer.apple.com/documentation/objectivec/nsobject-swift.class/accessibilityperformescape()

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.

Created in Swift with Ignite.

Supporting Swift for Swifts