ios - 更改控制中心的可访问性标签(远程命令中心)
问题描述
我有一个播放广播电台的简单应用程序。我添加了一个 MPRemoteCommandCenter 让用户通过控制中心控制音频。这一切都很好。
但是,我想更改他们的可访问性标签。但这是事情没有按预期工作的部分。
我已按如下方式设置了我的 remoteCommandCenter:
let remoteCommandCenter = MPRemoteCommandCenter.shared()
然后,我添加了控件和处理程序:
remoteCommandCenter.playCommand.isEnabled = true
remoteCommandCenter.playCommand.addTarget(self, action: #selector(ExternalPlaybackController.handleExternalPlayPauseCommandEvent(_:)))
然后,我想添加一些可访问性标签:
remoteCommandCenter.playCommand.accessibilityLabel = "Play radio"
这是行不通的。如果我调试代码,编译器将执行该行。我做错了什么?您甚至可以更改 remoteCommandCenter 的可访问性标签吗?
解决方案
您甚至可以更改 remoteCommandCenter 的可访问性标签吗?
我从未使用过这种组件,但我认为 VoiceOver 会忽略它,因为屏幕阅读器不会将其识别为可访问性元素。
在我看来,您的代码编译没有问题,因为您的可访问性属性属于UIAccessibility
非正式协议,这意味着它被很好地识别为代码。
但是,VoiceOver 不会将其解释为要读出的信息,因为您的元素不是一种 UIKit 控件。
我建议为您创建一个UIAccessibilityElementplayCommand
以便根据需要自定义其行为⟹ Apple doc声明:
UIAccessibility 非正式协议也由 UIAccessibilityElement 类实现,它表示自定义用户界面对象。如果您创建一个完全自定义的 UIView 子类,您可能需要创建一个 UIAccessibilityElement 实例来表示它。在这种情况下,您将支持所有 UIAccessibility 属性以正确设置和返回可访问性元素的属性。
推荐阅读
- java - 如何将 jdbcTemplate.queryForList 语句作为列表传递
- php - After adding jquery CDN link to my code, contact us "submit" button stop working
- reactjs - React: unique "key" prop does not apply to table rows?
- php - Eager loading the first item from multiple value from a related table in laravel 5.4
- json - jq:如何对嵌套对象进行切片以包含父键层次结构?
- ms-access - Crosstab query generates Run-Time error '13' Type mismatch
- swift - task.arguments 中的 Swift 参数
- java - JTable更改列顺序然后编辑单元格提升错误
- node.js - 将数据发送到节点视图而不会丢失表单数据
- .net - 我们可以将 SOAP 协议与传输层协议一起使用吗?