我正在尝试优化我的应用。使用accessibilityLabel
和accessibilityHint
在iOS中实现辅助功能的最佳做法是什么?是否始终需要可访问性标签?
我的应用程序非常动态,视图中的对象会根据用户的操作频繁更新。例如,视图可能从一个形状开始,然后变成另一个形状。因此,每个对象的accessibilityLabel
和accessibilityHint
会经常更新,以反映已启用VoiceOver的用户的已更改视图。
问题
当VoiceOver 不正在运行(即
!UIAccessibilityIsVoiceOverRunning()
)然后设置时,是否可以安全accessibilityLabel
和accessibilityHint
完全是accessibilityLabel
不必要?- 醇>
是否有除VoiceOver以外的辅助技术,用户可以使用该访问
accessibilityHint
和public class User implements Serializable{ private Address address; // this object(class) not implements Serializable }
?
答案 0 :(得分:2)
使用accessibilityLabel和accessibilityHint在iOS中实现辅助功能的最佳实践方法是什么?
您应该考虑,而不是“设置”可访问性标签,覆盖属性实现。允许需要可访问性标签的视图在需要时计算其值,而不是保持值不断同步。更容易!您可以使用看起来像这样的代码。
override public var accessibilityLabel: String? {
get {
return "Calculated label"
}
set {
//Specifically do nothing. We're not "setting a property" we're responding to changes of the internal views.
}
}
是否始终需要辅助功能标签?
是和否。对于呈现信息且可单独聚焦的元素,始终需要可访问性标签(您可以使用一组f控件,包含在一个布局中,并带有一个辅助功能标签)。我可以合理肯定地说,在您的问题的上下文中,删除可访问性标签绝对是不正确的事情。
当VoiceOver未运行时,可以安全地预期(即 !UIAccessibilityIsVoiceOverRunning())然后设置accessibilityLabel 和accessibilityHint是完全没必要的吗?
不,VoiceOver之外的辅助功能还有其他用途。
用户是否有除VoiceOver之外的辅助技术 可能会使用该访问权限accessibilityLabel和accessibilityHint吗?
VoiceOver之外肯定有辅助技术,它们依赖于无数的辅助功能。 (盲文板,交换机访问等)
结论
在我看来,你似乎试图将可访问性作为一种软件实践来解决,并使其合理化。这是错误的思考过程。但是,由于一些基本的设计问题,使得您可以访问的视图确实是不切实际的。您应该考虑您所拥有的东西是否以可从开发/ API的角度访问它的方式设计。 API确实限制您完成某些事情。无论您是否遇到其中一个限制都不是您可以在StackOverflow上提出的问题,解决方案不是忽略可访问性信息。它是重新设计控件或者可能提供一个备用的可访问实现......尽管这条路线应该非常谨慎地考虑。一般来说,分开是不相等的。