首页 > 解决方案 > 更改控制中心的可访问性标签(远程命令中心)

问题描述

我有一个播放广播电台的简单应用程序。我添加了一个 MPRemoteCommandCenter 让用户通过控制中心控制音频。这一切都很好。

但是,我想更改他们的可访问性标签。但这是事情没有按预期工作的部分。

我已按如下方式设置了我的 remoteCommandCenter:

let remoteCommandCenter = MPRemoteCommandCenter.shared()

然后,我添加了控件和处理程序:

remoteCommandCenter.playCommand.isEnabled = true
remoteCommandCenter.playCommand.addTarget(self, action: #selector(ExternalPlaybackController.handleExternalPlayPauseCommandEvent(_:)))

然后,我想添加一些可访问性标签:

remoteCommandCenter.playCommand.accessibilityLabel = "Play radio"

这是行不通的。如果我调试代码,编译器将执行该行。我做错了什么?您甚至可以更改 remoteCommandCenter 的可访问性标签吗?

标签: iosswiftvoiceoveruiaccessibilitympremotecommandcenter

解决方案


您甚至可以更改 remoteCommandCenter 的可访问性标签吗?

我从未使用过这种组件,但我认为 VoiceOver 会忽略它,因为屏幕阅读器不会将其识别为可访问性元素。

在我看来,您的代码编译没有问题,因为您的可访问性属性属于UIAccessibility非正式协议,这意味着它被很好地识别为代码。
但是,VoiceOver 不会将其解释为要读出的信息,因为您的元素不是一种 UIKit 控件。

我建议为您创建一个UIAccessibilityElementplayCommand以便根据需要自定义其行为⟹ Apple doc声明:

UIAccessibility 非正式协议也由 UIAccessibilityElement 类实现,它表示自定义用户界面对象。如果您创建一个完全自定义的 UIView 子类,您可能需要创建一个 UIAccessibilityElement 实例来表示它。在这种情况下,您将支持所有 UIAccessibility 属性以正确设置和返回可访问性元素的属性。


推荐阅读