你如何实现 UIAccessibility 协议?

Posted

技术标签:

【中文标题】你如何实现 UIAccessibility 协议?【英文标题】:How do you implement the UIAccessibility protocol? 【发布时间】:2017-06-06 16:06:05 【问题描述】:

ios 无障碍编程指南”指出:

另一种方法是在自定义子类的实现中实现 UIAccessibility 协议的 isAccessibilityElement 方法。以下代码 sn -p 显示了如何执行此操作:

但是当我这样做时,如下代码所示:

class UITextLayerLabel : UIView, UIAccessibility 

XCode 向我返回此错误:

 [...] Use of undeclared type 'UIAccessibility'

我错过了什么?特定的进口?该协议在 iOS 10/XCode8 中是否仍然可用?

【问题讨论】:

如果你的类继承了 UIView,你会自动拥有可访问的 UIAccessibility 协议方法,因为 UIView 符合这个非正式协议。不要在您的示例中指定协议,它应该像魅力一样工作。 【参考方案1】:

正如here 所指出的,UIAccessibility 是一个非正式协议。有关非正式协议和正式协议的区别,请参阅here。

基本上,没有称为UIAccessibility 的类型。实际上,UIView 已经符合UIAccessibility。要使您的自定义视图可访问,只需覆盖以 accessibility 开头的属性和方法。

那么什么时候需要实现UIAccessibility呢?如here所述,

您可以使用 UIAccessibilityElement 提供有关 图标或文本图像不会自动访问,因为它不会 从 UIView (或 UIControl )继承。 包含此类的视图 非视图项创建 UIAccessibilityElement 的实例以 表示需要访问的每个项目。

【讨论】:

以上是关于你如何实现 UIAccessibility 协议?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIAccessibility 功能添加到 UIButton 操作?

UITableView 上的 UIAccessibility 实现

如何启用在模态视图上使用两指 UIAccessibility“转义”手势的能力?

如何判断用户是不是处于IOS UIAccessibility的开关控制模式

Xcode 7.1 错误 UIAccessibility 错误

Swift 5.2 UIAccessibility.isAssistiveTouchRunning 永远不会返回 true,也不会触发 UIAccessibility.assistiveTouchSt