9

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.

Aaron Brager
  • 65,323
  • 19
  • 161
  • 287
abritez
  • 2,616
  • 3
  • 29
  • 36
  • This looks useful: https://www.assetstore.unity3d.com/en/#!/content/9555 – Aaron Brager Mar 07 '15 at 21:27
  • Broken link, but if you go to the correct URL, you'll see that this plugin is deprecated. https://assetstore.unity.com/packages/tools/integration/ios-sdk-pro-native-api-access-from-c-javascript-and-boo-9555 – brennanyoung Sep 08 '20 at 10:52

3 Answers3

1

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.

Nikita Ivaniushchenko
  • 1,425
  • 11
  • 11
1

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

brennanyoung
  • 6,243
  • 3
  • 26
  • 44
  • 1
    Welcome to Stack Overflow! Just linking to your own library or tutorial is not a good answer. Linking to it, explaining why it solves the problem, providing code on how to do so and disclaiming that you wrote it makes for a better answer. See: [**What signifies “Good” self promotion?**](//meta.stackexchange.com/q/182212) – Paul Roub May 03 '17 at 20:09
  • Very true, I edited the post to add more explanations. – Michelle Martin Jun 08 '17 at 17:19
0

Unity3d does not support the .ipa files that are used by VoiceOver to provide hooks that allow the feature to function. Therefore, the feature cannot be used directly to make an application more accessible.

Therefore, a method of developing a system based on VoiceOver within Unity must be used, which could make use of some current VoiceOver conventions - i.e. recreating VoiceOver's methods of handling pages and applications within Unity.

Other than that I'm unsure what you could do without taking the "long way round" of creating your own language support with similar accessibility functions to VoiceOver.

DasKapital
  • 73
  • 7