69

我正在尝试将辅助功能添加到已经开发的 iOS 应用程序中。

如果 iPhone 设置的辅助功能菜单中的 VoiceOver 选项打开,我希望它们显示几个 UI 功能(例如按钮),如果画外音关闭,则不显示。

有没有办法检查画外音选项是否打开?

4

4 回答 4

119
BOOL UIAccessibilityIsVoiceOverRunning();
于 2012-01-11T23:21:33.800 回答
33

在 ViewDIdLoad

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


- (void)voiceOverStatusChanged
{
    if(!UIAccessibilityIsVoiceOverRunning())
    {
        //do your changes
    }
}
于 2013-12-05T10:11:46.990 回答
12

对于 Swift 4.2 和更新版本,您可以检查 UIKit 提供的以下布尔值:

UIAccessibility.isVoiceOverRunning

于 2018-10-22T09:58:08.653 回答
3

作为对之前所有正确答案的补充,自 iOS11 以来,根据此Accessibility options recap ,要使用的新通知名称为:

  • UIAccessibilityVoiceOverStatusDidChange(SWIFT < 4.2)。
  • UIAccessibilityVoiceOverStatusDidChangeNotification(对象)。

...虽然UIAccessibilityVoiceOverStatusChanged已弃用。

编辑SWIFT 4.2 == >UIAccessibility.voiceOverStatusDidChangeNotification

于 2018-03-06T13:22:45.320 回答