ReactNative - 不为 Android 调用 onAccessibilityAction在 iOS 上运行良好

问题描述

我在具有辅助功能支持的 RadioGroup 中使用 TouchableOpacity。选择任何单选按钮时,我正在使用OnCaccessibleDible回调来读出所选的单选按钮。

但是 onAccessibilityAction 回调不适用于 Android。它只是有时阅读。在 iOS 上完美运行。

为了临时修复,我在 onPress 时添加了无障碍语音代码。但有时会读取两次。

这是我的代码

{

radioProps.map(({ text,value,selected,disabled }) => (
        <TouchableOpacity
          style={{ ...Styles.radioContainer,opacity: disabled ? 0.4 : 1 }}
          key={value}
          accessible={true}
          accessibilityLabel={`${getAccessibleLabel(selected,value)} ${text}`}
          accessibilityRole={'radio'}
          accessibilityActions={[{ name: 'selected',label: 'selected' }]}
          onAccessibilityAction={(event): void => {
            if (event.nativeEvent.actionName === 'selected') {
              onRadioBtnPress(value);
            }
          }}
          disabled={disabled}
          onPress={(): void => {
            onRadioBtnPress(value);
            if (isAndroid()) {
              AccessibilityInfo.announceForAccessibility(`${getLabel('selected')} ${text}`);
            }
          }}
          activeOpacity={1}
        >
          <Radio selected={selected || (!!selectedValue && selectedValue === value)} />
          <BodyTextLargeRegular
            style={Styles.textStyle}
            accessible={false}
          >
            {text}
          </BodyTextLargeRegular>
        </TouchableOpacity>   
))}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)