J'examine notre application pour le rendre plus accessible, et j'ai un problème avec une vue personnalisée. Note: J'utilise Xamarin/C#, mais cela ne change rien, je l'espère, car il utilise la même API sous le capot.Gérer un "robinet" de VoiceOver sur une vue personnalisée
Cette vue personnalisée reproduit essentiellement le mouvement «glisser vers déverrouiller». Bien sûr, cela ne fonctionne pas avec VoiceOver car, quand il est activé, l'utilisateur ne peut pas "glisser" mais seulement deux fois pour activer une vue/un bouton.
La vue est comme UIView
sous-classe, composée des enfants UIVIew
s, et un UIPanGestureRecognizer
qui attrape le geste de gauche à droite.
j'ai commencé en ajoutant les informations d'accessibilité à la classe parente:
IsAccessibilityElement = true;
AccessibilityTraits = UIAccessibilityTrait.Button;
AccessibilityLabel = "...";
VoiceOver voit maintenant correctement le curseur comme un point de vue, au lieu de vérifier les sous-vues. Cependant, je ne peux pas l'activer en utilisant le geste "VoiceOver double tap".
J'ai essayé de sous-classer UIControl
au lieu de UIView
et de surcharger sendAction(), mais cette méthode n'est pas appelée.
Je ne souhaite pas définir le trait UIAccessibilityTraitAllowsDirectInteraction
sur le contrôle, car cela rend le rendu de l'application impossible.
Que puis-je faire pour attraper le "double tap" et faire l'action qui est supposée être faite lorsque l'utilisateur glisse le contrôle?