Is there any way to communicate with iOS's VoiceOver accessibility native support via Unity3d? We have an application that needs to be accessible, and we are not sure how to go about it.
Creating our own custom VoiceOver is not possible since we need language support, so we need to go native. Our gut tells us to communicate with iOS via a plugin, however it seems that iOS hardware is not able to capture unity taps, but also it seems to override some of our gestures.
Any suggestion would be appreciated.
There is some note here
In general, you do not create accessibility elements for items in your application because standard UIKit controls and views are accessible by default. However, if you have a view that contains nonview items, such as icons or text images, that need to be accessible to users with disabilities, you create accessibility elements to represent them. In this case, the containing view should implement the UIAccessibilityContainer informal protocol and use this method to create an accessibility element to represent each item that should be exposed to an assistive application.
and here
The UIAccessibilityContainer informal protocol provides a way for UIView subclasses to make selected components accessible as separate elements. For example, a view might contain icons or drawn text that, to end users, appear and function as separate items. But because these components are not implemented as instances of UIView, they are not automatically accessible to users with disabilities. Therefore, such a container view should implement the UIAccessibilityContainer methods to supply accessibility information about these components to assistive applications such as VoiceOver.
I'm not familiar with Unity itself, but that's seems to be possible to hack containing view to support accessibility - you can build set of UIAccessibilityElemets
that represents currently visible items on screen.
Unfortunately, Unity and VoiceOver cannot natively work together, since Unity takes care of all rendering - including the UI. That is why VoiceOver or any other screen reader cannot access the UI and make it accessible. Really your only option is, as you already mentioned, taking the long way around and implement the same functionality inside of Unity. You can either implement this yourself, or use a plugin that does it for you.
There's a plugin available that recreates screen reader functionality for Unity UI. It works like VoiceOver and TalkBack, and uses the native VoiceOver speech for text-to-speech output. https://assetstore.unity.com/packages/tools/gui/ui-accessibility-plugin-uap-87935
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With