Question

En guise d'exercice avec l'accessibilité et un défi personnel pour moi-même, j'ai décidé que je voudrais écrire une application relativement simple.

L'application montrerait un MKMapView des États-Unis et lorsque vous appuyez sur partout sur elle, il utilise un MKReverseGeocoder pour vous montrer la localité, l'état et le pays où vous avez tapé. Cela fonctionne très bien, même si je dois pirater les événements tactiles en ajoutant un WildcardGestureRecognizer au MKMapView. Cela fonctionne très bien avec VoiceOver éteint.

Quand je tourne sur VoiceOver et appuyez sur la carte, il est dit « carte ». Si j'appuyez deux fois en fait peu de bruit clicky qui indique que vous avez activa. Pour être honnête, je suis à une perte pour savoir comment intercepter ces événements. Je sais que la solution générale est de mettre une vue transparente au-dessus de l'écran et transmettre des touches, mais que le travail avec VoiceOver?

Pour l'enregistrement, le WildcardGestureRecognizer j'utilise se trouve ici: Comment intercepter touche les événements sur un MKMapView ou UIWebView objets

Était-ce utile?

La solution

Le problème est que lorsque vous allumez VoiceOver, les événements tactiles sont bloqués par le système. Pour le prouver, mettez une trace dans votre fonction touchesBegan. Il devrait tirer bien jusqu'à ce que vous mettez VoiceOver.

Le petit son clicky que vous entendez lorsque vous appuyez deux fois sur le geste est VoiceOver sur-ride. VoiceOver a son propre ensemble de gestes mais vous pouvez surpassement les gestes de VoiceOver avec un double-tap en attente.

Par exemple, vers le bas glisser ne défile pas avec VoiceOver. Mais si vous double-tap-attente, attendre le son clicky puis glisser vers le bas, il défilera.

Autres conseils

iOS 5.0 a ajouté cette capacité - il suffit de régler la UIAccessibilityTraitAllowsDirectInteraction trait sur la vue:

mapView.accessibilityTraits |= UIAccessibilityTraitAllowsDirectInteraction;

(si cela ne fonctionne pas, vous pourriez plutôt besoin de sous-classe la vue carte et passer outre la méthode accessibilityTraits)

Le premier contact sur cet élément sera toujours rendre le son « clic » et annoncer le nom de la vue, etc., mais toutes les touches suivantes seront des interactions directes - à savoir les événements tactiles seront transmis à la vue de la carte

exemple dans l'utilisation dans une des applications iOS d'Apple est GarageBand -. La vue piano a ce jeu de trait de sorte que la personne aveugle peut jouer sur les touches du clavier de piano par directement les toucher

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top