在 VoiceOver 打开时设置不同的行为,在带有按钮的堆栈视图中

Set different behaviour when VoiceOver is on, in stack view with buttons

我有一个带有两个并排按钮的自定义堆栈视图。当 VoiceOver 打开时,我希望它将这两个按钮读作某种选项卡,例如 "Button X Item 1 of 2" 和 "Button Y Item 2 of 2"。可能吗?

我的视图控制器有以下内容:

@IBOutlet weak var buttonAdd: UIButton!
@IBOutlet weak var buttonDelete: UIButton!
@IBOutlet weak var selector: CustomSelectorStackView!

我尝试添加到我的 viewDidLoad:

accessibilityElements = [buttonAdd, buttonDelete]

并更改了按钮的特性但没有成功。

我应该向 viewDidLoad 添加哪些特征或其他可访问性元素,以便获得所需的输出。

您可以使用辅助功能标签 属性 允许 VoiceOver 阅读您喜欢的任何内容:

让按钮 = [buttonAdd, buttonDelete]

for button in buttons {
    button.accessibilityLabel = "\(button), Item \(x) of \(buttons.count)"
}

您也可以将其添加为提示(但请注意,某些 VoiceOver 用户会关闭提示):

for button in buttons {
    button.accessibilityLabel = button
    button.accessibilityHint = "Item \(x) of \(buttons.count)"
}

这些示例假定 VoiceOver 用户可以理解可见文本,例如 "Add Button" 或 "Delete Button." 如果文本不可理解,或者您使用的是图像而不是文本,使用 accessibilityLabel 分配可理解的文本。但是,在此示例中,您将无法遍历,您必须将标签单独分配给每个按钮。然后,您可以将制表符编号附加到标签,或遍历以将它们分配给提示。

buttonAdd.accessibilityLabel = "Add Button"
buttonDelete.accessibilityLabel = "Delete Button"

基本上,有多种方法可以完成您所描述的内容,这些只是几个例子。

本指南非常有用: http://a11y-guidelines.orange.com/mobile_EN/dev-ios.html