我有一个播放电台的简单应用。我添加了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控件。

我建议为您的playCommand创建一个UIAccessibilityElement ,以便根据您的Apple doc状态自定义其行为:

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

10-08 12:08