SwiftUI 具有方便的.accessiblityAction()
ViewModider,它可以将辅助功能操作添加到您正在创建的视图中。键盘用户和 VO 用户可以了解附加到视图的操作并触发它们。
我希望能够根据布尔值有条件地应用操作。如下所示:
Button {
print("Button tapped")
} label: {
Text("Button title")
}
if addActionToButton.wrappedValue {
.accessibilityAction(named: "Button action") {
print("Button action triggered")
}
}
但是您不能将 ViewModifier 放在语句accessibilityAction
内部if
。
.accessibilityLabel
有一个接受isEnabled
参数的变体。当 isEnabled 条件为 false 时,它不应用可访问性标签:
@State addA11Label: Bool
Button {
print("Button tapped")
} label: {
Text("Button title")
}
.accessibilityLabel("Button foo. Double-tap to do stuff.", isEnabled: addA11Label.wrappedValue)
我想要一个accessibilityAction
isEnabled
参数,但没有那么幸运。
我如何有条件地将添加accessibilityAction
到我的Button
(或其他视图)中?
您可以创建一个自定义视图扩展,
@ViewBuilder
仅当指定的布尔值为真时才添加操作。例子:
扩展将检查布尔值,
.accessibilityAction(named:perform:)
如果条件满足则应用,否则将保持不变。