OPTION 1
您可以通过观察来聆听新元素何时被聚焦UIAccessibilityElementFocusedNotification
通知
[[NSNotificationCenter defaultCenter] addObserver:yourTTSManager
selector:@selector(interruptTTSFunction:)
name:UIAccessibilityElementFocusedNotification
object:nil];
并在收到自定义语音合成公告时中断它们。
优点:为 VoiceOver 用户提供很多控制权。
缺点:您不知道 VoiceOver 何时完成朗读新聚焦的控件,因此您无法使用它来中断和重新启动公告。
OPTION 2
您可以通过发帖来告诉 VoiceOver 暂停和重新启动
UIAccessibilityPostNotification(UIAccessibilityPauseAssistiveTechnologyNotification, nil);
在您宣布之前以及
UIAccessibilityPostNotification(UIAccessibilityResumeAssistiveTechnologyNotification, nil);
完成后。
优点:您的公告将被完整地宣读。
缺点:当您暂停 VoiceOver 时,您就失去了用户的控制权。
推荐
如果您的公告很短,暂停和恢复 AT 并不是一个糟糕的解决方案。否则,我建议允许 VoiceOver 用户通过收听来中断/取消您的公告UIAccessibilityElementFocusedNotification
事件,并在收到任何活动公告时取消它们。