O SwiftUI tem o prático .accessiblityAction()
ViewModider que adiciona uma ação de acessibilidade a uma visualização que você está criando. Usuários de teclado e usuários de VO podem aprender sobre as ações anexadas à Visualização e acioná-las.
Quero poder aplicar condicionalmente uma ação baseada em um booleano. Algo assim:
Button {
print("Button tapped")
} label: {
Text("Button title")
}
if addActionToButton.wrappedValue {
.accessibilityAction(named: "Button action") {
print("Button action triggered")
}
}
No entanto, você não pode colocar um ViewModifier accessibilityAction
dentro de uma if
declaração.
.accessibilityLabel
tem uma variante que recebe um isEnabled
parâmetro. Quando a condição isEnabled é falsa, ela não aplica o rótulo de acessibilidade:
@State addA11Label: Bool
Button {
print("Button tapped")
} label: {
Text("Button title")
}
.accessibilityLabel("Button foo. Double-tap to do stuff.", isEnabled: addA11Label.wrappedValue)
Quero um accessibilityAction
isEnabled
parâmetro, mas não tenho essa sorte.
Como eu poderia adicionar condicionalmente um accessibilityAction
à minha Button
(ou outra visualização)?
Você pode criar uma extensão de exibição personalizada que adiciona
@ViewBuilder
a ação somente quando um valor booleano especificado é verdadeiro.Exemplo:
A extensão verificaria o booleano e aplicaria
.accessibilityAction(named:perform:)
se a condição fosse atendida; caso contrário, deixaria a visualização inalterada.