web-dev-qa-db-ja.com

iOSボイスオーバーのステータス

開発済みのiOSアプリにアクセシビリティ機能を追加しようとしています。

IPhone設定のユーザー補助メニューのVoiceOverオプションがオンの場合に表示し、ボイスオーバーがオフの場合に表示しないUI機能(ボタンなど)がいくつかあります。

ナレーションオプションがオンになっているかどうかを確認する方法はありますか?

64
Arash
BOOL UIAccessibilityIsVoiceOverRunning();
105
David Dunham

ViewDIdLoad

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


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

Swift 4.2の場合、UIKitが提供する次のブール値を確認できます。

UIAccessibility.isVoiceOverRunning

4
Lucas P.

以前のすべての正解の補足として、iOS11以降、使用される新しい通知名は次のとおりです。

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

... UIAccessibilityVoiceOverStatusChangedは非推奨です。

[〜#〜] edit [〜#〜] for Swift 4.2 ==> UIAccessibility.voiceOverStatusDidChangeNotification

2
XLE_22