2016-04-28 2 views
4

J'ai un bouton et quand j'appuie sur le bouton, il y aura une alerte. Lorsque j'ai une voix off et appuyez sur le bouton, puis appuyez sur le bouton OK d'alerte pour fermer l'alerte, la mise au point retournera en haut du bouton page/retour, plutôt que le bouton qui déclenche l'alerte.iOS Accessibilité, comment faire la mise au point revenir au dernier élément après avoir ignoré l'alerte

J'utilise ce morceau de code pour déplacer le focus sur le bouton:

let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0 * Double(NSEC_PER_SEC))) 

dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
    UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, button) 
}) 

Le problème est une fois que vous rejetez l'alerte, l'accent sera revenir vers le haut et lire l'étiquette d'abord , puis revenez au bouton. L'accent ne va pas directement sur le bouton, qui semble assez boiteux.

J'ai vérifié certaines applications Apple, et je trouve qu'après avoir ignoré l'alerte, le focus reviendra à l'élément précédent avant que l'alerte n'apparaisse. Une idée de comment y parvenir? Merci!

Répondre

0

j'avais cette question plus tôt aujourd'hui - la façon dont je l'ai résolu est en postant un UIAccessibilityScreenChangedNotification au lieu d'un UIAccessibilityLayoutChangedNotification:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, button)

changements de mise en page sont pour un changement de mise en page dans le contexte actuel de votre point de vue. Les changements d'écran sont à utiliser lorsqu'un changement dans le contexte est vécue par l'utilisateur, c'est-à-dire en rejetant une alerte et en revenant au contrôleur de présentation de présentation.

Vous pouvez vous débarrasser du bloc dispatch_after aussi - en utilisant l'écran a changé la notification à la place vous donnera les mêmes fonctionnalités que vous décrivez de l'une des applications d'Apple.

Here est un lien vers une réponse expliquant la différence entre UIAccessibilityLayoutChangedNotification et UIAccessibilityScreenChangedNotification.