[当我的用户按下带有无效文本的按钮时,我会显示一个UILabel(以前是隐藏的),其中包含文本”输入的无效值”。
我希望旁白能自动读出出现的标签。我该怎么做?
如果要向旁白展示一些重要信息,则应发布“可访问性声明”:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, // announce
@"My important information"); // actual text
您想做这样的事情:
AVSpeechSynthesizer* speechSynth;
AVSpeechUtterance *utterance;
speechSynth = [[AVSpeechSynthesizer alloc] init];
speechSynth.delegate = self;
utterance = [AVSpeechUtterance speechUtteranceWithString:@"Hello, world!"];
[speechSynth speakUtterance:utterance];
注意:仅限于iOS7
UIAccessibility.post(notification: .announcement, argument: "your text")
似乎没有队列(在iOS 13上仍然如此)。如果在用户操作(例如单击按钮)后立即发布公告,则该按钮可能会被按钮的自动旁白公告所吞没。在这种情况下,您应该在适当的延迟后发布公告(如here所述)。如果延迟时间太短,则您的公告可能会切入按钮的公告。
[AVSpeechUtterance
将对所有用户说文本,UIAccessibility.post
仅对在可访问性设置f.i中选择了旁白的用户讲文本。因为他们有视觉障碍。