首页 文章

加载视图控制器后的画外音顺序

提问于
浏览
2

我有这样的要求 .

我的视图控制器正在从远程休息服务加载数据,数据显示在表中 . 在加载过程开始之前,我需要画外音说

“装载建筑物 . 请稍候”

加载数据成功后我需要画外音说

“建筑物装载”

在此之后我需要说出我的视图控制器中的 Headers 是什么

“选择一座建筑” .

订单非常重要 . 现在,在加载控制器 Headers 后,Voiceover正在开始读取 . 当我的建筑物数据加载开始时,“选择建筑物” Headers 消息被中断并且“正在加载建筑物 . 请等待”开始 . 盲人需要以正确的顺序通知这些状态,因此在加载数据后我需要说“选择建筑物” .

我需要控制语音消息顺序 . 我需要控制何时说出controller.title内容,或者从配音中禁用controller.title .

要通知画外音说些什么,我正在使用这段代码:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Buildings loaded");

1 回答

  • 1

    UIAccessibilityScreenChangedNotification 被窃听 . 这应该做你想要的 .

    另一种选择是:

    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Buildings loaded");
    

    然而,这也是错误的,是的APPLE!获得所需行为的唯一选择是劫持屏幕更改通知,因为它是iOS 8.2中唯一没有被窃听的通知 .

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Say these words please");
    

    这在VoiceOver中提供了额外的小Beep-Boop,但这并不可怕 . 所以,这对你有用,但是,从A11y的观点我建议的解决方案如下:

    当你加载你的viewcontroller,并出现请等待的diologue时,将焦点移动到它 . 据推测,这实际上是Modal(意味着在完成此操作之前,您无法与应用程序的其余部分进行交互) . 如果您提供UIElement,焦点将转移到元素,而不是提供要宣布的字符串,它将被读出 .

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _PleaseWaitLabel);
    

    然后,加载完成后,执行以下操作:

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _ChooseABuildingHeading);
    

    完全忽略“建筑物装载”公告,没有必要,只要您的等待通知是模态,并且您将焦点转移到正确的 Headers 后,将会发生什么事情 .

相关问题