UIAccessibilityFocus协议无法正常工作

问题描述 投票:2回答:2

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

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

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

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

ios8 accessibility ios8.1 voiceover uiaccessibility
2个回答
1
投票

尝试使用:

  isAccessibilityElement = true 

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

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


0
投票

在最初的问题之后超过2年,但我希望无论如何这都会有所帮助。

出现此问题的原因是您可能在视图控制器中覆盖了这些方法,您应该直接在辅助功能元素中实现代码。

您可以创建一个类来定义辅助功能元素,或者只是在其中放置UIAccessibilityFocus覆盖函数的超类的扩展。

© www.soinside.com 2019 - 2024. All rights reserved.