有没有办法以编程方式设置可访问性焦点(App Store 安全)?任何帮助将不胜感激。
问问题
39021 次
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 (在特定情况下触发的弹出窗口)- 上面的代码需要添加到 toast
View
- 此代码将自动将焦点更改为弹出视图 (
toast
) 并且 VoiceOver 将读取accessibilityLabel
于 2021-04-29T01:42:45.757 回答