UIAccessibilityFocus协议无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIAccessibilityFocus协议无法正常工作相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

尝试使用:

  isAccessibilityElement = true 

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

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

另一答案

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

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

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

以上是关于UIAccessibilityFocus协议无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

处理无障碍标准手势的语音

HTTPS原理浅析

golang实现正/反向代理服务

正对开源工作的源码管理web (ssh协议管理) 本地如何使用SourceTree 管理

与 Paypal 的 PHP REST SDK 的支付协议

怎么从Wireshark过滤出单个VoLTE用户呼叫和媒体流