With attributed accessibility labels, your app could now, for example, greet your users in different languages. Note that it will change to the voice of the corresponding language you are switching to.

Two examples of a fictional app to teach you new languages. It is showing the user how to greet in the morning in two different languages: “Buenos días” in Spanish and “Buongiorno” in Italian. In code, it sets an accessibilityAttributeLabel to the view with the string and a dictionary containing the accessibilitySpeechLanguage attribute key and the “es-Es” value for Spanish or the “it-IT” value for Italian. The label ends up with the text “Means: good morning”. The language is only applied to the first bit that is not in English.

Example code in the image:

let greetingLessonView = UIView()
let bcp47LanguageCode = "es-Es"
let translatedPhrase = "¡Buenos días! "

let attributedLabel = NSMutableAttributedString(string: translatedPhrase,attributes: [.accessibilitySpeechLanguage: bcp47LanguageCode])

attributedLabel.append(NSAttributedString(string: "Means: good morning!"))

greetingLessonView.accessibilityAttributedLabel = attributedLabel

You may also find interesting...

Sometimes, buttons change meaning, for example when toggled. An example is a play button, tap it and it becomes a pause button. In such case, updating its accessibility label will be clearer than trying to convey the change with traits or values.

Check for the traversal order of elements in your app. Sometimes, the default top-left to bottom-right order might not be the most logical one. Sometimes, you may consciously want to tweak the order. Some other times, grouping is the answer.

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