React Native中的辅助功能焦点事件

时间:2017-11-27 09:36:06

标签: react-native accessibility

我正在编写一个针对盲童的反应原生游戏应用程序,以帮助他们掌握数学知识。有一个游戏,他们必须计算屏幕中有多少动物;当动物被按下时,它会发出声音。

在本地反应中有onPress <TouchableWithouFeedback />属性允许我播放声音,但当涉及视障用户时,我必须宣布有动物而不仅仅是玩声音。

如何知道屏幕阅读器是否关注某个View并调用函数来执行此操作?

3 个答案:

答案 0 :(得分:0)

对于专注于特定对象的屏幕阅读器,似乎没有任何反应方式。相反,您需要在每个动物对象上使用accessibilityLabel属性。

<TouchableOpacity accessible={true} accessibilityLabel="This is a tiger">
   ...
</TouchableOpacity>

当用户选择此对象时,只需轻轻一按,他们就会听到&#34;这是一只老虎。&#34;然后,在双击屏幕后,他们应该听到所有其他用户通常会听到的相关声音。

我不认为使用给定的API,你可以做的比这更多。不确定限​​制是在OS SDK还是React Native级别。

查看Accessibility上的React Native文档以获取更多详细信息。

答案 1 :(得分:0)

当前无法检测元素是否具有VoiceOver或TalkBack焦点。 (我既未实施UIAccessibilityFocus也未实施TYPE_VIEW_ACCESSIBILITY_FOCUSED for Android

答案 2 :(得分:0)

解决此问题的唯一方法是开发用于图像的本机模块,为可访问性事件添加本机侦听器。例如,这意味着在Android中:

public List<Repositories> GetRepositoryTree()
{
    List<Repositories> data = new List<Repositories>();
    try
    {
        data = dbContext.Repositories.Include(x => x.RepositoryObjectChildren).Where(x => x.ParentId == null).ToList();
    }
    catch (Exception e)
    {
        logger.LogError(e, LoggingGlobals.NotFound);
        data = null;
    }
    return data;
}

我的小组开发了一个ios / android组件,该组件公开了当前通过npm发布的图像的事件:https://www.npmjs.com/package/react-native-accessible-image