我希望在我的应用中启用辅助功能支持,当用户输入无效数据时,我会在其中显示内联验证消息(例如,如下面的屏幕截图所示)。我的应用没有显示任何错误消息。
什么是最好和直观的方式来告知视障人士/盲人用户错误的数据输入。例如用户名和密码不匹配,无效。
答案 0 :(得分:7)
首先,没有“正确”的方法来做到这一点。只有很多方法可行。实现这一目标的“最佳”方式是iOS具有“必需”特征(IMO)。但是这不受支持,因此我们必须使用iOS给我们提供的内容......提示和标签。
第1步:
告诉用户需要什么。我会通过将信息添加到提示来完成此操作。我想在提示中添加信息,只有非熟悉的用户才需要。应用程序的“超级用户”将使用所需的字段(假设您将拥有返回用户,某些视图只是“命中并运行”类型)。但是,重点是,不要向用户提供不必要的信息。经常访问特定视图的用户将使用所需的内容,因此请在提示中保留非关键信息。你想要的是画外音读出文本输入字段,如:“电子邮件(accessibilityLabel)文本字段(对象的类型),(暂停)此字段是必需的。(提示)”不要等到失败后向VoiceOver用户提供此信息。它应该始终以这种方式设置。如果故障类型发生更改,请更改提示以适应此特定类型的故障。如果您希望保持提示与红色突出显示的标签同步,您可以考虑覆盖UIAccessibilityProtocol中的功能以提取此信息EX:
- (NSString*)accessibilityHint {
return myUILabel.text;
}
这应该导致保持对象的提示,并使UILabel的文本保持同步。
第2步:
标记不是文本输入字段的所有元素,而不是可访问性元素。用户需要的有关这些字段的所有信息都存储在字段类型(文本输入字段),标签(电子邮件/密码)或提示(无论是否需要)中。因此,我们不希望VoiceOver查看其他元素,因为这将是重复信息。
第3步:
使用以下代码行:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, anAccessibilityElement);
在您的登录操作中。在失败的登录操作中,您应该将配音焦点转移到导致失败的元素。这会通知用户他们的行为已经尝试,并且失败了。它还允许他们轻松地知道哪个元素导致了故障,并且需要修复。如果发生多次故障,请确保将焦点转移到第一次故障!