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 - 辅助功能方法 - 移动焦点的主要内容,如果未能解决你的问题,请参考以下文章