Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add accessibility to Unity3d for iOS [closed]

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.

like image 371
abritez Avatar asked Mar 07 '13 15:03

abritez


2 Answers

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.

like image 164
Nikita Ivaniushchenko Avatar answered Sep 22 '22 20:09

Nikita Ivaniushchenko


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

like image 25
Michelle Martin Avatar answered Sep 21 '22 20:09

Michelle Martin