We are seeking guidance on the Apple-recommended way to handle aggregated accessibility labels in UIKit.
When grouping elements into a single accessibility container, we need VoiceOver to read their labels with a natural structural pause, without injecting conversational grammar. SwiftUI handles this automatically and gracefully with .combine, but we need the endorsed UIKit equivalent for complex custom views.
The Problem When manually aggregating child labels into a parent's accessibilityLabel in UIKit, VoiceOver behaves inconsistently in non-Latin scripts. For example, if we simply join the strings with a Latin comma (", "), VoiceOver ignores the separator in languages like Arabic or Japanese, reading the aggregated labels as a confusing run-on sentence.
What we have considered and tried:
NSListFormatter: While it correctly localizes separators, it inappropriately injects list grammar (e.g., adding "and" before the final item). Since our UI elements are merely spatially grouped on the screen and do not form a grammatical sentence, this confuses users.
Hardcoded punctuation (e.g., Latin commas): Works fine for English, but fails to trigger VoiceOver pauses in non-Latin scripts as mentioned above.
Double Line Break (\n\n): We found that joining strings with a double line break universally forces a hard stop and structural pause across all languages without injecting grammar. However, we have received community feedback suggesting that using newlines might cause poor formatting or UX issues on Braille displays.
Our Questions:
Is there an Apple-endorsed native approach to replicate SwiftUI's .combine behavior in UIKit that avoids injecting conversational grammar?
If we must join the strings manually, is using a double line break (\n\n) considered safe and acceptable for Braille display users? Or is it better practice to manually map and apply localized commas?
Any guidance from the Accessibility Technologies team or developers who have tackled this in large-scale UIKit apps would be greatly appreciated. Thank you!
Topic:
Accessibility & Inclusion
SubTopic:
General
2
0
47