首页 文章

如何在画外音讲话时停止文本到语音,或者在Swift中反之亦然?

提问于
浏览
5

现在,我的应用程序实现了 AVSpeechSynthesizer 来读出每个屏幕的说明 . 该应用还会在启用Voiceover辅助功能时考虑 .

我现在面临的问题是文本到语音功能与配音功能重叠 . 是否有解决方案来检测当用户导航到屏幕上的另一个元素时,TTS停止说话,或者当TTS说话时,画外音不会说话直到TTS结束(尽管前者是优选的) .

目前的开发是在iOS 8上,使用Swift .

1 回答

  • 4

    选项1

    您可以通过观察 UIAccessibilityElementFocusedNotification 通知来监听何时聚焦新元素

    [[NSNotificationCenter defaultCenter] addObserver:yourTTSManager
                                             selector:@selector(interruptTTSFunction:)
                                                 name:UIAccessibilityElementFocusedNotification 
                                               object:nil];
    

    并在收到自定义语音合成公告时中断它们 .

    优点:为VoiceOver用户提供了很多控制权 .

    缺点:您不知道VoiceOver何时读取新聚焦的控件,因此您无法使用它来中断和重新启动通知 .

    方案2

    您可以通过发布告诉VoiceOver暂停和重新启动

    UIAccessibilityPostNotification(UIAccessibilityPauseAssistiveTechnologyNotification, nil);
    

    在你宣布之前

    UIAccessibilityPostNotification(UIAccessibilityResumeAssistiveTechnologyNotification, nil);
    

    完成后 .

    优点:您的公告将全部读完 .

    缺点:当您暂停VoiceOver时,您可以从用户手中取出控制权 .

    RECOMENDATION

    如果您的公告很短,暂停和恢复AT并不是一个糟糕的解决方案 . 否则,我建议允许VoiceOver用户通过监听 UIAccessibilityElementFocusedNotification 事件来中断/取消您的通知,并在收到任何活动通知时取消它们 .

相关问题