使用`accessibilityLabel`和`accessibilityHint`

时间:2017-07-27 17:28:06

标签: ios swift optimization voiceover uiaccessibility

我正在尝试优化我的应用。使用accessibilityLabelaccessibilityHint在iOS中实现辅助功能的最佳做法是什么?是否始终需要可访问性标签?

我的应用程序非常动态,视图中的对象会根据用户的操作频繁更新。例如,视图可能从一个形状开始,然后变成另一个形状。因此,每个对象的accessibilityLabelaccessibilityHint会经常更新,以反映已启用VoiceOver的用户的已更改视图。

  

问题

     
      
  1. 当VoiceOver 正在运行(即!UIAccessibilityIsVoiceOverRunning())然后设置时,是否可以安全   accessibilityLabelaccessibilityHint完全是accessibilityLabel   不必要?

  2.   
  3. 是否有除VoiceOver以外的辅助技术,用户可以使用该访问accessibilityHint public class User implements Serializable{ private Address address; // this object(class) not implements Serializable }

  4.   

1 个答案:

答案 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上提出的问题,解决方案不是忽略可访问性信息。它是重新设计控件或者可能提供一个备用的可访问实现......尽管这条路线应该非常谨慎地考虑。一般来说,分开是不相等的。