【问题标题】:TextField announcing Label and AccessibilityLabel on Voice OverTextField 在 Voice Over 上宣布 Label 和 AccessibilityLabel
【发布时间】:2021-12-22 12:05:06
【问题描述】:

当设置UILabelAccessibilityLabel 时,AccessibilityLabel 会通过语音播报而不是Text。但是,当设置 UITextFieldAccessibilityLabel 时,AccessibilityLabel AND Text 会在旁白中宣布。

如何覆盖 Voice Over 公告中的 UITextField.Text?我不想宣布Text,我需要宣布其他内容,因为我的文本是日期,例如 01/10/2021,而我想宣布“2021 年 1 月 10 日”。当我设置AccessibilityLabel 时,它会宣布“2021 年 1 月 10 日 01/10/2021”。

【问题讨论】:

  • UITextField 只是一个输入字段。根据 WCAG 4.1.2,屏幕阅读器应宣布名称、角色和值。您通过AccessibilityLabel 听到名称,并且通过Text 听到值。所以你要问的是你想要读取输入字段的标签而不是输入字段的值。那将是一件坏事。但我了解您希望读取的值与文字值不同。屏幕阅读器用户对于日期的读取方式有很多选择,应该由他们自己选择。
  • 感谢您的信息,日期读取只是其中一种情况。其他一些 TextFields 有一个“/mo”,当使用画外音而不是“slash mo”时,我们需要将其宣布为“每月”。还有其他一些非常具体的案例,根据产品决策,我们需要宣布除展示内容之外的其他内容。

标签: ios xamarin.ios accessibility xib


【解决方案1】:

看看下面的定义

  • accessibilityLabel

    本地化字符串中的简洁标签,用于标识可访问性元素。

  • accessibilityHint

    一个本地化字符串,其中包含对可访问性元素执行操作结果的简要说明。

  • AccessibilityValue

    表示可访问性元素当前值的字符串。

尝试将accessibilityHintaccessibilityLabel 设置为空字符串,并将AccessibilityValue 设置为您想要的。

textfield.AccessibilityLabel = "";
textfield.AccessibilityHint = "";
textfield.AccessibilityValue = "the string you want ";

参考

Override VoiceOver message in UITextField - iOS Accessibilty

change UITextField accessibility description

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多