UIAccessibilityFocus协议无法正常工作

时间:2015-11-21 16:34:39

标签: ios8 accessibility ios8.1 voiceover uiaccessibility

我想知道用户何时将焦点从可访问性元素移开。我尝试重写accessibilityElementDidLoseFocus()accessibilityElementDidBecomeFocused()方法,但在导航到VoiceOver辅助功能模式中的其他元素时似乎没有调用这些方法。我不知道出了什么问题。还有什么我应该做的来激活这些方法吗?

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

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

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

2 个答案:

答案 0 :(得分:1)

尝试使用:

  isAccessibilityElement = true 

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

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

答案 1 :(得分:0)

最初提出问题后已有2年以上,但我希望无论如何都会有帮助。

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

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