UIAccessibilityAnnouncementNotification asynch issue

时间:2012-09-10 15:29:22

标签: ios synchronization notifications voiceover uiaccessibility

我注意到UIAccessibility post通知方法是某种异步调用。这听起来对我来说非常正确,因为你需要听取最后的事件,而不是昨天发生的那些......但是看看这个例子:

UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"String 1");
UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"String 2");

您只能收听“字符串2”。

这个例子非常简单,您可以回答可以将“string 2”附加到“string 1”并解决问题。但是我遇到这样的情况,但是我不能追加两个字符串。

我的问题是:是否有同步通知的方法?

另一个例子如下。假设你有一个标签栏应用程序。切换到特定栏时,我希望VoiceOver说出特定的文字。当你概率知道时,当你选择一个标签时,VoiceOver会说自己像“Bar1 bar selected”。

所以... VoiceOver公告涵盖了我自己的特定文本。

2 个答案:

答案 0 :(得分:0)

对于iOS 6.0+,您可以使用UIAccessibilityAnnouncementDidFinishNotification来同步您的公告。

答案 1 :(得分:0)

自iOS 11起,已引入新的attributed accessibility properties,其中包括一个特定的accessibilitySpeechQueueAnnouncement键,该键可以使通知排队或中断当前语音。

但是,如果您发送了很多通知,并且VoiceOver需要接管(例如,用户轻弹以使新元素聚焦),则未发出声音的通知将尽快删除。系统会发出元素的属性(stackoverflow answer)。

我认为,这是目前同步通知的最佳方式

对于第二个关于标签栏的要求,可以写一个新的专用问题...