你如何实现 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