Ios 当信号丢失(即没有用户交互)时,如何播放画外音通知?

Ios 当信号丢失(即没有用户交互)时,如何播放画外音通知?,ios,swift,accessibility,voiceover,Ios,Swift,Accessibility,Voiceover,我构建了一个简单的音频流应用程序,如下所示: 当我失去音频流连接时,我的应用程序会将此屏幕覆盖在UI的顶部: 我想让盲人或视力低下的人可以访问该应用程序,因此我希望Voiceover能够说出信号丢失,并在信号丢失且覆盖屏幕出现时重新连接。这一切都是在没有任何用户交互的情况下发生的,类似于屏幕超时时发生的情况,VO说“屏幕变暗”。这将是很好的VO发言,信号恢复后重新连接,太,但不是绝对必要的 更棘手的是,当“信号丢失”屏幕打开时,用户不应该能够操作下面主UI中的任何其他字段 我如何做到这一点 提前

我构建了一个简单的音频流应用程序,如下所示:

当我失去音频流连接时,我的应用程序会将此屏幕覆盖在UI的顶部:

我想让盲人或视力低下的人可以访问该应用程序,因此我希望Voiceover能够说出信号丢失,并在信号丢失且覆盖屏幕出现时重新连接。这一切都是在没有任何用户交互的情况下发生的,类似于屏幕超时时发生的情况,VO说“屏幕变暗”。这将是很好的VO发言,信号恢复后重新连接,太,但不是绝对必要的

更棘手的是,当“信号丢失”屏幕打开时,用户不应该能够操作下面主UI中的任何其他字段

我如何做到这一点


提前感谢您的帮助

好吧,您可以创建一个mp3语音录音,然后在屏幕出现时只需使用AVAudio即可播放。

如果您已设置为播放音频,但没有mp3,则可以使用AVFoundation:

import AVFoundation
创建一个合成警告等的功能,例如

/// Reads A Word Using Speech Syntheseis
///
/// - Parameters:
///   - word: String
func readWordAloud(_ word: String){

    //1. Create The Word To Be Read Aloud
    let wordReader = AVSpeechUtterance(string: word)
    wordReader.volume = 1

    //2. Pass It To The Speech Synthesizer
    let speechSynthesizer = AVSpeechSynthesizer()
    speechSynthesizer.speak(wordReader)

}
按如下方式调用该方法:

readWordAloud("No Audio Available")
要禁用与UIView的交互,只需使用:

self.view.isUserInteractionEnabled = false
您可以使用UIAccessibilityPostNotification发布公告,这将导致它仅在启用VoiceOver时大声读出公告:

UIAccessibilityPostNotification(
    UIAccessibilityAnnouncementNotification, 
    "Signal Lost" as NSString
)
解释NSString参数以及何时适合使用:

此通知包含一个参数,该参数是包含通知的NSString对象。辅助技术输出参数中包含的公告字符串

使用此通知可提供有关不更新应用程序用户界面UI或仅短暂更新UI的事件的可访问性信息


我的建议是尽量少使用公告,但我要说的是,在没有任何用户交互的情况下发生的事件通常(但并非总是)是对它们的良好利用。

谢谢!这将一直阅读课文。我想让它这样的文本将只在画外音时发言。类似的非用户启动事件也会发生,例如屏幕超时和屏幕变暗时。一定有某种机制可以做到这一点。效果很好。非常感谢。