Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 加载视图控制器后的画外音命令_Ios_Objective C_Accessibility_Voiceover - Fatal编程技术网

Ios 加载视图控制器后的画外音命令

Ios 加载视图控制器后的画外音命令,ios,objective-c,accessibility,voiceover,Ios,Objective C,Accessibility,Voiceover,我有这样的要求 我的视图控制器正在从远程rest服务加载数据,数据显示在表中。在加载过程开始之前,我需要画外音说 “正在加载建筑物。请稍候” 加载数据成功后,我需要画外音说 “装载的建筑物” 在这之后,我需要说我的视图控制器的标题是什么 “选择一栋建筑” 订单很重要。现在,画外音在加载控制器后开始读取控制器标题中的内容。“我的建筑”数据加载启动后,“选择建筑”标题消息将中断,“正在加载建筑。请稍候”将启动。盲人需要以正确的顺序被告知此状态,因此在加载数据后,我需要说“选择一栋建筑” 我需要控制语

我有这样的要求

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

“正在加载建筑物。请稍候”

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

“装载的建筑物”

在这之后,我需要说我的视图控制器的标题是什么

“选择一栋建筑”

订单很重要。现在,画外音在加载控制器后开始读取控制器标题中的内容。“我的建筑”数据加载启动后,“选择建筑”标题消息将中断,“正在加载建筑。请稍候”将启动。盲人需要以正确的顺序被告知此状态,因此在加载数据后,我需要说“选择一栋建筑”

我需要控制语音信息。我需要控制何时说出controller.title内容或从画外音禁用controller.title

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

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=是。太好了!非常感谢您的知识分享。现在我从不同的角度来看这个问题。