iOS改变了对辅助功能的关注

tkclm6bt  于 2023-01-22  发布在  iOS
关注(0)|答案(4)|浏览(140)

有没有一种方法来设置无障碍焦点编程(应用商店安全)?任何帮助将不胜感激。

bkhjykvo

bkhjykvo1#

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方法中都不能工作。

mwkjh3gx

mwkjh3gx2#

这是Swift代码:

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

使用示例

let titleLabel = UILabel()

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIAccessibility.post(notification: .screenChanged, argument: titleLabel)
}
pdkcd3nj

pdkcd3nj3#

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(在特定场景下触发的弹出窗口)
  • 以上代码需要添加到吐司View
  • 此代码将自动将焦点更改为弹出视图(toast),并且旁白将读取accessibilityLabel
t1qtbnec

t1qtbnec4#

以关注您可以调用的元素。
斯威夫特:

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

目标C:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, self.myFirstView);

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

self.accessibilityElements = @[myFirstView, mySecondButton, myThirdLabel]

相关问题