gpt4 book ai didi

ios - 在 VoiceOver 停止朗读文本后使用 AVSpeechSynthesizer 播报文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:08 27 4
gpt4 key购买 nike

我需要在我的应用程序的所有用户执行某些操作时向他们通告一些文本。为此,我使用了 AVSpeechSynthesizer。这很有效,除非您使用 VoiceOver 来执行操作。因为 VoiceOver 正在向用户宣布一些系统提供的信息,然后同时播放我的 AVSpeechUtterance,所以声音重叠。如何将我的语音排入队列,以便在 VoiceOver 结束说话后才播放?

最佳答案

您可以通过观察 VoiceOver 事件来实现这一点。先添加一个Voiceover通知观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(voiceOverDidStop:) name:UIAccessibilityAnnouncementDidFinishNotification object:nil];

然后,在指定的方法中:

-(void)voiceOverDidStop:(NSNotification*)n {
NSString* msg;
NSNumber* finished;

msg = [[n userInfo] objectForKey:UIAccessibilityAnnouncementKeyStringValue];
finished = [[n userInfo] objectForKey:UIAccessibilityAnnouncementKeyWasSuccessful];

if(finished) {
// send the AVSpeechSynthsizer message
}
}

请记住在处理您的应用程序之前删除观察!

您可以使用的另一种方法(如果适用)是编辑用户正在操作的对象的 accessibilityLabelaccessibilityHint 属性。将这些属性设置为 @"",这样 VoiceOver 就知道该对象没有什么可说的了。

希望这对您有所帮助,即使我的回答来得太晚了:)

关于ios - 在 VoiceOver 停止朗读文本后使用 AVSpeechSynthesizer 播报文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312071/

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