我已经构建了一个简单的音频流应用程序,如下所示:
当我丢失音频流连接时,我的应用将此屏幕叠加在用户界面上:
我想让盲人或低视力的人可以使用该应用程序,因此我希望Voiceover在信号丢失并显示覆盖屏幕时说“信号丢失”和“重新连接”。这一切都发生在没有任何用户交互的情况下(类似于屏幕超时时发生的情况,而VO说,'屏幕变暗')。对于VO来说,重新连接时“信号恢复”也很好,但并非绝对必要。
为了使它变得更加棘手,当“信号丢失”屏幕启动时,用户不应该操纵下面主UI中的任何其他字段。
我如何做到这一点?
提前感谢您的帮助!
答案 0 :(得分:2)
您可以使用UIAccessibilityPostNotification
制作"声明",这将使其大声读取(仅当VoiceOver启用时):
UIAccessibilityPostNotification(
UIAccessibilityAnnouncementNotification,
"Signal Lost" as NSString
)
documentation for UIAccessibilityAnnouncementNotification
解释NSString
论证以及何时适合使用:
此通知包含一个参数,该参数是包含公告的NSString对象。辅助技术输出参数中包含的公告字符串。
使用此通知提供有关未更新应用程序用户界面(UI)或仅短暂更新UI的事件的辅助功能信息。
我的建议是谨慎使用公告,但我要说的是,在没有任何用户互动的情况下发生的事件通常 - 但并非总是 - 很好地利用它们。
答案 1 :(得分:1)
如果您开始播放音频但没有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