iOS - 辅助功能方法 - 移动焦点

Posted

技术标签:

【中文标题】iOS - 辅助功能方法 - 移动焦点【英文标题】:iOS - Accessibility methods - moving focus 【发布时间】:2017-01-27 17:06:24 【问题描述】:

我正在开发一个应用程序并尝试使其尽可能易于访问。一旦发生动作,我试图将焦点转移到某个元素。我很好奇这两个函数的区别:

UIAccessibilityFocusedElement 与 UIAccessibilityPostNotification

如果有人能解释两者之间的区别,将不胜感激。

【问题讨论】:

这并没有直接解决两者之间的区别,而是我加注的一个惊人的概述,它可能会解决您的问题,并且与UIAccessibilityPostNotification直接相关:***.com/questions/27797515/… 抱歉回复晚了。是的,并没有真正回答这个问题,但确实帮助解决了我的问题。 【参考方案1】:

如果您尝试将焦点移至基于操作/屏幕更改场景的元素。

我想你应该看看:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, element_to_be_focused>);

应在出现包含屏幕主要部分的新视图时发布。

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, element_to_be_focused); 

应该在屏幕布局发生变化时发布,例如当单个元素出现或消失时。

【讨论】:

【参考方案2】:

UIAccessibilityPostNotification 用于更改事物(例如聚焦元素,但也可以暂停和恢复类似的辅助技术:

UIAccessibility.post(notification: .pauseAssistiveTechnology, argument: UIAccessibility.AssistiveTechnologyIdentifier.notificationSwitchControl)
UIAccessibility.post(notification: .resumeAssistiveTechnology, argument: UIAccessibility.AssistiveTechnologyIdentifier.notificationSwitchControl)

它也可以宣布一些东西:

UIAccessibility.post(notification: .announcement, argument: "Say something")

或在无障碍滚动后刷新焦点

UIAccessibility.post(notification: .pageScrolled, argument: nil)

另一方面,UIAccessibilityFocusedElement 不能改变任何东西。它只是以这种方式返回当前聚焦的元素(或nil):

UIAccessibility.focusedElement(using: UIAccessibility.AssistiveTechnologyIdentifier.notificationVoiceOver)

附带说明 - 目前只有可以暂停或恢复的辅助技术是 notificationSwitchControl,尝试使用 Voice Over 会导致崩溃

【讨论】:

以上是关于iOS - 辅助功能方法 - 移动焦点的主要内容,如果未能解决你的问题,请参考以下文章

关于 iOS 辅助功能。如何将焦点转移到pickerView

滑动切换焦点辅助元素 iOS

辅助功能将焦点设置到导航栏标题项

IOS辅助功能选择的标记不移动

更改焦点时不读取辅助功能提示

沙盒化后辅助功能 API 停止工作