Is there any way to have VoiceOver read a label on command?
You can move VoiceOver focus to an element by using the following:
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, elementToFocusOn)
VoiceOver will then parse and read the accessibility properties associated with that element.
You can make VoiceOver speak any string any time you want by calling:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, NSLocalizedString("QR code has been detected", comment: ""))
Swift 4
UIAccessibility.post(notification: .announcement, argument: "Text")
There is no direct way to tell VoiceOver to speak updates of an element that VoiceOver cursor is not on. This (i.e. speaking the same content "manually") is a feasible workaround.