iOS:动态标签/验证错误的辅助功能支持?

iOS: Accessibility support for dynamic labels / validation errors?

我想在我的应用程序中启用辅助功能支持,当用户输入一些无效数据时,我会收到内联验证消息(例如,按照下面的屏幕截图)。我的应用程序没有显示任何错误消息。

什么是通知视觉 impaired/blind 用户有关错误数据输入的最佳且直观的方式。例如用户名和密码不匹配,无效。

首先,没有 "correct" 方法可以做到这一点。有很多方法可以工作。 "best" 的方法是 iOS 具有 "required" 特征(IMO)。但这不受支持,因此我们必须使用 iOS 给我们的...提示和标签。

第 1 步:

告诉用户需要什么。我会通过将信息添加到提示中来做到这一点。我喜欢在只有不熟悉的用户需要的提示中添加信息。 "Power users" 您的应用程序将使用所需的字段(假设您将拥有 return 用户,一些视图只是 "hit and run" 类型)。但是,重要的是,不要向用户提供不必要的信息。经常访问特定视图的用户会习惯所需的内容,因此请在提示中保留非关键信息。您想要的是画外音像这样读出文本输入字段:"Email(accessibilityLabel) text field (the type of object), (pause) This field is required.(hint)" 不要等到失败后才向 VoiceOver 用户提供此信息。它应该总是这样设置。如果故障类型发生变化,则更改提示以适应这种特定的故障类型。如果你想让提示与红色突出显示的标签保持同步,你可以考虑覆盖 UIAccessibilityProtocol 中的函数以提取此信息 EX:

- (NSString*)accessibilityHint {
    return myUILabel.text;
}

这应该会使对象的提示与 UILabel 的文本保持同步。

第 2 步:

将所有不是文本输入字段的元素标记为无障碍元素。用户需要的有关这些字段的所有信息都存储在字段类型(文本输入字段)、标签(email/password)或提示(无论是否需要)中。因此,我们不希望 VoiceOver 查看其他元素,因为这将是重复信息。

第 3 步:

使用下面一行代码:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, anAccessibilityElement);

在您的登录操作中。在登录操作失败时,您应该将画外音焦点转移到导致失败的元素上。这会通知用户他们的操作已尝试,但失败了。它还使他们能够轻松了解导致故障的因素,以及需要修复的因素。如果出现多次故障,请确保将注意力转移到第一个故障上!