Initial VoiceOver selection
THis has always been perfectly possible to do.
Just write something along the lines of:
- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated]; UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, self.myFirstElement);}@end
This works for both the UIAccessibilityScreenChangedNotification and the UIAccessibilityLayoutChangedNotification.More info: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAccessibility_Protocol/Introduction/Introduction.html#//apple_ref/c/data/UIAccessibilityLayoutChangedNotificationAnd here:http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/Accessibility/AccessibilityfromtheViewControllersPerspective.html#//apple_ref/doc/uid/TP40007457-CH2-SW1
Now for Swift 5override func viewDidAppear(_ animated: Bool) { UIAccessibility.post(notification: UIAccessibility.Notification.screenChanged, argument: myFirstElement)}
I don't think there is an API value that specifies an order of reading, other than using Summary Element value on startup - it is by design.
So you would have to test the order and default for the UIKit elements or any custom controls, because it depends on your design. You can also mark items as non-accessible elements so they won't be 'read', accessible elements read by default, and containers for accessible elements to allow you to better control your intended interactions. I don't know if making the item selected will help.
I take it you are already using the Accessibility Inspector to test your application before testing on iOS.
If you are needing some background on the subject, Rune's Working With VoiceOver Support and Gemmell's Accessibility for Apps may be worth reading.