web-dev-qa-db-fra.com

État de la voix off iOS

J'essaie d'ajouter des fonctionnalités d'accessibilité à une application iOS qui a déjà été développée.

Il y a quelques fonctionnalités d'interface utilisateur (par exemple des boutons) que j'aime qu'elles apparaissent si l'option VoiceOver dans le menu d'accessibilité des paramètres de l'iPhone est activée et ne s'affichent pas si la voix off est désactivée.

Existe-t-il un moyen de vérifier si l'option de voix off est activée ou non?

64
Arash
BOOL UIAccessibilityIsVoiceOverRunning();
105
David Dunham

Dans ViewDIdLoad

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(voiceOverStatusChanged)
                                             name:UIAccessibilityVoiceOverStatusChanged
                                           object:nil];


- (void)voiceOverStatusChanged
{
    if(!UIAccessibilityIsVoiceOverRunning())
    {
        //do your changes
    }
}
30
Rakesh iOS Dev

Pour Swift 4.2, vous pouvez vérifier le booléen suivant fourni par UIKit:

UIAccessibility.isVoiceOverRunning

4
Lucas P.

En complément de toutes les bonnes réponses précédentes, depuis iOS11, le nouveau nom de notification à utiliser est:

  • UIAccessibilityVoiceOverStatusDidChange (Swift <4.2).
  • UIAccessibilityVoiceOverStatusDidChangeNotification (ObjC).

... tandis que UIAccessibilityVoiceOverStatusChanged est obsolète.

MODIFIER pour Swift 4.2 ==> UIAccessibility.voiceOverStatusDidChangeNotification

2
XLE_22