40

有没有办法以编程方式设置可访问性焦点(App Store 安全)?任何帮助将不胜感激。

4

4 回答 4

59

要专注于您可以调用的元素。

迅速:

UIAccessibility.post(notification: .screenChanged, argument: self.myFirstView)

对象:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, self.myFirstView);

否则,对于 iOS 8+,使用accessibilityElements 设置元素顺序,它将自动关注列表中的第一个元素

self.accessibilityElements = @[myFirstView, mySecondButton, myThirdLabel]
于 2016-04-27T01:58:10.727 回答
8
extension UIAccessibility {
    static func setFocusTo(_ object: Any?) {
        if UIAccessibility.isVoiceOverRunning {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.8) {
                UIAccessibility.post(notification: .layoutChanged, argument: object)
            }
        }
    }
}

添加此扩展并通过传入您想要关注的视图来调用它。如果您想在使用标签栏导航时更改焦点,可以从 viewWillAppear 调用它。如果没有 0.7 或更多的延迟,此代码将无法在任何 init 方法中工作。

于 2020-03-11T12:54:17.317 回答
3

这是斯威夫特代码:

UIAccessibility.post(notification: .screenChanged, argument: <theView>)

示例用法

let titleLabel = UILabel()

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIAccessibility.post(notification: .screenChanged, argument: titleLabel)
}
于 2019-08-30T13:51:49.737 回答
0
UIAccessibility.post(notification: .layoutChanged, argument: toast)
toast.becomeFirstResponder()
toast.isAccessibilityElement = true
toast.accessibilityTraits = .staticText //Traits option ie .header, .button etc
toast.accessibilityLabel = "Accessibility label to be read by VoiceOver goes here"

在哪里:

  • toast是我的 UIView (在特定情况下触发的弹出窗口)
  • 上面的代码需要添加到 toastView
  • 此代码将自动将焦点更改为弹出视图 ( toast) 并且 VoiceOver 将读取accessibilityLabel
于 2021-04-29T01:42:45.757 回答