gpt4 book ai didi

ios8 - 如何在 Voiceover 说话时停止 Text to Speech,反之亦然在 Swift 中?

转载 作者:行者123 更新时间:2023-12-04 19:02:57 25 4
gpt4 key购买 nike

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

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

当前的开发是在 iOS 8 上,使用 Swift。

最佳答案

选项1

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

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

并在收到自定义语音合成通知时打断它们。

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

缺点:您不知道 VoiceOver 何时完成读取新聚焦的控件,因此您不能使用它来中断和重新启动公告。

选项 2

您可以通过发布来告诉 VoiceOver 暂停和重新启动
UIAccessibilityPostNotification(UIAccessibilityPauseAssistiveTechnologyNotification, nil); 

在您宣布之前和
UIAccessibilityPostNotification(UIAccessibilityResumeAssistiveTechnologyNotification, nil); 

完成后。

优点:您的公告将被完整阅读。

缺点:当您暂停 VoiceOver 时,您的控制权会从用户手中夺走。

推荐

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

关于ios8 - 如何在 Voiceover 说话时停止 Text to Speech,反之亦然在 Swift 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com