Created attachment 314491 [details] HTML file to demonstrate issue On iOS, VoiceOver does not follow browser focus when using JS to focus on an element that: - Is not in the default tab order - Uses tabindex='-1' to allow focus to be set via JS - Has multiple child elements In these cases, although the browser focus moves, the VoiceOver cursor stays in place. If you reduce the number of child elements to one, VoiceOver follows focus as expected. I've attached an HTML file to reproduce the bug, it's also available on JSBin: http://output.jsbin.com/wemuhex Steps to Reproduce: 1. Open the attached page on an iOS device running iOS 10 and open VoiceOver. 2. Select the button labelled "Focus" and activate it. Actual Results: The VoiceOver cursor does not move to the div containing two p tags, although browser focus does. Expected Results: The VoiceOver cursor should move to the div containing two p tags and VoiceOver should begin reading the contents of that div. Additional Information: To see the expected behavior, you can remove the second p tag from the demo, or test the demo using VoiceOver + Safari for macOS, which handles the situation in the expected way.
<rdar://problem/33108225>