我注意到UIAccessibility post通知方法是某种异步调用。这听起来对我来说非常正确,因为你需要听取最后的事件,而不是昨天发生的那些......但是看看这个例子:
UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"String 1");
UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"String 2");
您只能收听“字符串2”。
这个例子非常简单,您可以回答可以将“string 2”附加到“string 1”并解决问题。但是我遇到这样的情况,但是我不能追加两个字符串。
我的问题是:是否有同步通知的方法?
另一个例子如下。假设你有一个标签栏应用程序。切换到特定栏时,我希望VoiceOver说出特定的文字。当你概率知道时,当你选择一个标签时,VoiceOver会说自己像“Bar1 bar selected”。
所以... VoiceOver公告涵盖了我自己的特定文本。
答案 0 :(得分:0)
对于iOS 6.0+,您可以使用UIAccessibilityAnnouncementDidFinishNotification来同步您的公告。
答案 1 :(得分:0)
自iOS 11起,已引入新的attributed accessibility properties,其中包括一个特定的accessibilitySpeechQueueAnnouncement
键,该键可以使通知排队或中断当前语音。
但是,如果您发送了很多通知,并且VoiceOver需要接管(例如,用户轻弹以使新元素聚焦),则未发出声音的通知将尽快删除。系统会发出元素的属性(stackoverflow answer)。
我认为,这是目前同步通知的最佳方式。
对于第二个关于标签栏的要求,可以写一个新的专用问题...