Slider de SwiftUI no interpreta doble toque con VoiceOver.
Estoy utilizando SwiftUI para construir un elemento Slider
y estoy intentando usar un gesto de doble toque para restablecer su valor predeterminado. Esto funciona bien en el modo sin VoiceOver.
Según Apple (aquí), en VoiceOver, un doble toque se hace usando un triple toque. (Ver la sección “Tomar una acción en un elemento”). Sin embargo, cuando selecciono el Slider en el modo VoiceOver y hago un triple toque, escucho los tres tonos que significan “no ha sucedido nada” y mi devolución de llamada no se activa.
Mi código está abajo:
import SwiftUI
struct ContentView: View {
@State var value: Float = 0.5
var body: some View {
VStack {
Slider(value: self.$value, in: 0...1)
.contentShape(Rectangle())
.border(Color.red)
.onTapGesture(count: 2, perform: {
print("¡Restaurando a predeterminado!")
self.value = 0.5
})
}
}
}
He intentado agregar atributos de accesibilidad (al menos, aquellos que podrían tener sentido para mí, como allowsDirectInteraction
), y nada parece habilitar esto. ¿Me estoy perdiendo algo?
davy.ai
Parece que solo agregar las características de accesibilidad por sí solas no resuelve el problema. Puedes intentar agregar el modificador
.simultaneousGesture
a tuSlider
e implementar un gesto personalizado que reconozca el triple-tap para el modo VoiceOver.Aquí tienes un ejemplo de código que podría funcionar:
Este código utiliza un
TripleTapGesture
personalizado que reconoce un triple-tap realizado en el modo VoiceOver (filtrando los double-taps en la secuencia de gestos). Luego envía un anuncio a VoiceOver y establece tu valor en el valor predeterminado.¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.