2013-04-29 3 views
2

J'ai deux questions concernant l'accessibilité et UICollectionViews avec lesquelles j'espère avoir l'aide d'un expert. L'autre question concernant l'ordre de lecture de Voice Over est here. J'ai créé un sample project démontrant les deux problèmes.UICollectionView En-têtes de section comme en-têtes d'accessibilité

J'ai un UICollectionView où je fournis des en-têtes de section personnalisés. Ces en-têtes de section sont des éléments d'accessibilité et possèdent le trait d'accessibilité UIAccessibilityTraitHeader. Lorsque la fonction Voice Over est activée et que l'utilisateur parcourt horizontalement la collection, l'en-tête est annoncé correctement et il est même déclaré en tant qu'en-tête. Toutefois, si l'utilisateur balaie l'en-tête suivant vers le haut ou vers le bas, Voice Over ne passera à un autre en-tête que s'il est visible. Je suppose que c'est parce que lorsqu'une vue n'est pas visible dans une vue de collection, elle est supprimée de la hiérarchie de vue et Voice Over ne sait plus qu'elle existe.

Vous pouvez tirer this example project, l'exécuter, activer la voix off et utiliser la molette pour définir le balayage vers le haut/bas pour afficher le problème.

Y a-t-il un moyen de permettre à l'utilisateur de passer à un en-tête qui n'est pas visible actuellement? Toute aide serait grandement appréciée.

Répondre

0

Vous devrez peut-être utiliser la propriété scrollToItemAtIndexPath:atScrollPosition:animated: du UICollectionView pour faire défiler l'en-tête pour que VoiceOver puisse le lire.

Vous pouvez savoir quel indexPath vous êtes actuellement via indexPathForItemAtPoint: en utilisant la position de l'endroit où ils ont touché dans la vue de la collection, puis vous savez quelle section vient après.

+0

Je ne suis pas sûr de suivre. Je ne pense pas que lorsque la fonction Voice Over est activée, vous recevez des notifications de connexion de la manière traditionnelle; Cependant, je peux me connecter quand une cellule reçoit l'accent sur l'accessibilité. Malheureusement, je ne sais pas comment détecter quand l'utilisateur a glissé vers le haut ou vers le bas pour savoir quand passer à la section précédente ou suivante. Je suis sûr que 'accessibilityScroll' est le geste de défilement à trois doigts, pas le coup de doigt que je cherche. –

+0

Honnêtement, je n'ai pas assez utilisé Voice Over pour vous le dire. Cela devrait vous aider avec comment accrocher mon code ci-dessus dans le rappel: http://stackoverflow.com/a/15616144/308315 – iwasrobbed

Questions connexes