4
votes

I've created a custom accessibility rotor to allow navigating through custom annotation views following the example djibouti33 provides here: Create a custom VoiceOver Rotor to navigate MKAnnotationViews. It works after selecting the custom rotor, but the rotor for the MKMapView always defaults to some other selection. The ability to navigate through the custom annotations makes the most sense in the context of the App (i.e. place priority on navigating through the App-specific annotations). Is there a way to have the custom rotor selected by default?

Related to this, I think it would also be more intuitive to have VoiceOver state the option to select the custom rotor, but when the MKMapView is touched is VoiceOver always states "Use the rotor to select points of interest". Changing the map view accessibilityHint like this had no effect:

mapView.accessibilityHint = "use the rotor to access alerts"

Is it possible to change what VoiceOver speaks when a MKMapView is selected?

1
Have you found the solution?Pichirichi

1 Answers

0
votes

When a custom rotor is created, it's added to the bunch of rotor actions selected by the user in his settings. Unfortunately, user settings is kind of private box you cannot access in this case, that's why a custom rotor cannot be a default selection, it's a willingly user choice.

About the second question, your mapview is a container and, as a parent view that wants to show its children as accessible elements, its isAccessibilityElement property is false meaning that label or hint won't be analyzed by VoiceOver.

If you want to reach the accessible elements inside your map, your MKMapView itself will be never selected (only its elements) and then VoiceOver won't read out anything for this particular case because it's an invisible element for it.

According to your application presentation, you may post a notification while loading the view or add an accessible element before your map indicating that the rotor may be used to reach some information for instance.