我正在开发一款应用,并尝试尽可能让它变得可访问。一旦动作发生,我试图将焦点移动到某个元素。我很好奇这两个函数之间的区别:
UIAccessibilityFocusedElement与UIAccessibilityPostNotification
如果有人能解释两者之间的区别,我们将不胜感激。
答案 0 :(得分: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导致崩溃
答案 1 :(得分:1)
如果您尝试根据动作/屏幕更改方案将焦点移动到元素。
我想你应该看看:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, element_to_be_focused>);
当出现包含屏幕主要部分的新视图时,应该发布。
或
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, element_to_be_focused);
应在屏幕布局发生变化时发布,例如当单个元素出现或消失时。