Est-il possible de modifier l'ordre dans lequel la fonctionnalité VoiceOver pour l'accessibilité de l'iPad lit les éléments, lorsque le geste 'Effleurer deux doigts' est terminé?
Pour l'image jointe, qui contient 3 labels et un button, le VoiceOver lit les éléments de la façon suivante,
Étiquette 1 -> Étiquette 2 -> Bouton -> Étiquette 3
L'ordre peut-il être changé en
Étiquette 1 -> Étiquette 2 -> Étiquette 3 -> Bouton
Le moyen le plus rapide d'y parvenir pour votre exemple est de placer les trois labels dans une sous-class UIView
transparente pour servir de conteneur à vos labels. Cette sous-class devra être correctement configurée pour que VoiceOver sache comment l'interpréter. Si votre cible de deployment est iOS6
vous pouvez simplement répondre à la question "devrait-on regrouper les enfants d'accessibilité" dans cette sous-class.
-(BOOL)shouldGroupAccessibilityChildren{ return YES; }
Pour iOS6
ci-dessous, ce serait plus compliqué, sauf que votre sous-class de conteneur UIView
ne contiendrait que des UILabels
qui sont des éléments d'accessibilité. Vous pourriez l'implémenter comme ceci:
-(BOOL)isAccessibilityElement{ return NO; } -(NSInteger)accessibilityElementCount{ return self.subviews.count; } -(id)accessibilityElementAtIndex:(NSInteger)index{ return [self.subviews objectAtIndex:index]; } -(NSInteger)indexOfAccessibilityElement:(id)element{ return [self.subviews indexOfObject:element]; }
J'ai testé cet exemple de code et il fait ce que vous cherchez, si vous avez besoin d'une clarification s'il vous plaît append un commentaire. Toujours heureux de rendre les choses plus accessibles.
J'ai essayé de shouldGroupAccessibilityChildren
le shouldGroupAccessibilityChildren
à YES
mais cela n'a pas fonctionné pour moi.
Ce qui fonctionnait pour moi était de définir directement l'label d'accessibilité de la vue parente (parce que je voulais que tous les éléments soient lus en un seul geste / un geste VoiceOver).
[cell setAccessibilityLabel:[NSSsortingng ssortingngWithFormat:@"%@, %@", cityLabel, temperatureLabel]];
L'extrait de code ci-dessus provient de la documentation d'Apple Amélioration de l'accessibilité des cellules de vue de table
Je pense que vous pouvez le faire dans le storyboard. L'ordre VoiceOver est déterminé par l'ordre des vues dans le plan du document.
Faites simplement glisser les vues dans la hiérarchie de vue dans le bon ordre.
Dans Swift, attachez un IBOutlet à l'UIView parent, puis définissez shouldGroupAccessibilityChildren à true suffira.
abc.shouldGroupAccessibilityChildren = true
J'ai noté que si le paramètre isAccessibilityElement = true
est également isAccessibilityElement = true
le regroupement ne prendra pas effet. De même, si vous cochez la case d'accessibilité du storyboard ou du xib, cela empêchera le regroupement d'avoir lieu.