【问题标题】:UIAccessibilityFocus protocol not workingUIAccessibilityFocus 协议不起作用
【发布时间】:2015-11-21 16:34:38
【问题描述】:

我想知道用户何时将焦点从无障碍元素上移开。我已经尝试覆盖 accessibilityElementDidLoseFocus()accessibilityElementDidBecomeFocused() 方法,但是当我在 VoiceOver 辅助功能模式下导航到其他元素时,似乎没有调用这些方法。我不知道出了什么问题。我还应该做些什么来激活这些方法?

override func accessibilityElementDidBecomeFocused() {
    println("become focused")
}

override func accessibilityElementDidLoseFocus() {
    println("lose focus")
}

目前的开发是在 iOS 8.1 上,使用 Swift。

【问题讨论】:

  • 您试图以这种方式跟踪什么样的元素(按钮、自定义视图等)?
  • 实际上是任何类型的元素。可以导航到的所有元素,从导航栏到按钮。还有什么我应该实施的遗漏吗?我在 VoiceOver 模式下尝试过,但是当我滑动到另一个元素(导航栏按钮、按钮)时,这些方法似乎没有被调用。
  • @CherieCH。您确定您已经在可访问性元素上覆盖了这些方法吗?您是否看到 VoiceOver 光标突出显示了它?
  • 嗨贾斯汀,你所说的突出显示是什么意思?目前,元素在 VoiceOver 模式中“装箱”(激活 VoiceOver 时的默认外观)。我没有看到打印线,但如果那是你要问的。所以我认为这些方法没有被覆盖,但我不知道为什么:/

标签: ios8 accessibility ios8.1 voiceover uiaccessibility


【解决方案1】:

尝试使用:

  isAccessibilityElement = true 

此属性的默认值为 false,除非接收者是标准 UIKit 控件,在这种情况下该值为 true。

辅助应用程序只能获取有关由辅助功能元素表示的对象的信息。因此,如果您实现残障用户应该可以访问的自定义控件或视图,请将此属性设置为 true。这种做法的唯一例外是视图仅用作应可访问的其他项目的容器。这样的视图应该实现 UIAccessibilityContainer 协议并将该属性设置为 false。

【讨论】:

    【解决方案2】:

    在最初的问题之后 2 年多,但我希望这会有所帮助。

    出现问题是因为您可能在视图控制器中覆盖了这些方法,您应该直接在可访问性元素中实现代码

    您可以创建一个类来定义可访问性元素,或者只是对其超类进行扩展,您可以在其中放置 UIAccessibilityFocus 覆盖函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2011-11-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      相关资源
      最近更新 更多