Ios 加载视图控制器后的画外音命令
我有这样的要求 我的视图控制器正在从远程rest服务加载数据,数据显示在表中。在加载过程开始之前,我需要画外音说 “正在加载建筑物。请稍候” 加载数据成功后,我需要画外音说 “装载的建筑物” 在这之后,我需要说我的视图控制器的标题是什么 “选择一栋建筑” 订单很重要。现在,画外音在加载控制器后开始读取控制器标题中的内容。“我的建筑”数据加载启动后,“选择建筑”标题消息将中断,“正在加载建筑。请稍候”将启动。盲人需要以正确的顺序被告知此状态,因此在加载数据后,我需要说“选择一栋建筑” 我需要控制语音信息。我需要控制何时说出controller.title内容或从画外音禁用controller.title 要通知voiceover说些什么,我正在使用这段代码:Ios 加载视图控制器后的画外音命令,ios,objective-c,accessibility,voiceover,Ios,Objective C,Accessibility,Voiceover,我有这样的要求 我的视图控制器正在从远程rest服务加载数据,数据显示在表中。在加载过程开始之前,我需要画外音说 “正在加载建筑物。请稍候” 加载数据成功后,我需要画外音说 “装载的建筑物” 在这之后,我需要说我的视图控制器的标题是什么 “选择一栋建筑” 订单很重要。现在,画外音在加载控制器后开始读取控制器标题中的内容。“我的建筑”数据加载启动后,“选择建筑”标题消息将中断,“正在加载建筑。请稍候”将启动。盲人需要以正确的顺序被告知此状态,因此在加载数据后,我需要说“选择一栋建筑” 我需要控制语
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Buildings loaded");
UIAccessibilityScreenChangedNotification
被窃听。这应该是你想要的
另一种选择是:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Buildings loaded");
然而,这也被窃听了,耶,苹果!获得所需行为的唯一选项是劫持屏幕更改通知,因为它是自iOS 8.2以来唯一没有被窃听的通知
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Say these words please");
这在画外音中提供了额外的小哔哔声,但这并不可怕。因此,这对你来说是可行的,但是,从我的角度来看,我建议的解决方案如下:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Buildings loaded");
加载viewcontroller时,出现“请稍候”对话框,将焦点移到该对话框。据推测,这实际上是模态的(这意味着您在完成此操作之前无法与应用程序的其余部分交互)。如果提供UIElement,则焦点将转移到该元素,而不是提供要宣布的字符串,并将其读取
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _PleaseWaitLabel);
然后,加载完成后,执行以下操作:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _ChooseABuildingHeading);
完全跳过“已加载的建筑物”公告,这是没有必要的,只要您的等待公告是模态的,并且您在之后将焦点转移到正确的标题,就会清楚发生了什么。因此,我将尝试在拉动刷新活动指示灯下引入带有“加载数据”信息的附加标签,并将voice over ring focus更改为该元素。我开始了解它是如何工作的。在加载数据期间,用户不能更改语音焦点。有没有办法将焦点锁定在这个新标签上,直到加载数据?是的,在模式对话框中弹出这个标题,并将对话框中没有的项目设置为self.view.accessibilitylementshidden=是。太好了!非常感谢您的知识分享。现在我从不同的角度来看这个问题。