ios - 使用 UITabBarController 的 UIAccessibility 焦点
问题描述
如何将UIAccessibility
焦点设置在 a 的选定选项卡的内容上UITabBarController
?它一直专注于选定的UITabBarItem
.
我试图将焦点设置在UITabBarControllerDelegate
:
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if let destination = (viewController as? UINavigationController)?.viewControllers.first {
UIAccessibility.post(notification: .screenChanged, argument: destination)
} else {
UIAccessibility.post(notification: .screenChanged, argument: viewController)
}
}
我也尝试在 selected 中设置焦点UIViewController
:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIAccessibility.post(notification: .screenChanged, argument: accessibilityElements?.first)
}
不幸的是,可访问性焦点没有改变。我不确定这是 iOS 13 问题还是一般标签栏问题,因为即使是 Apple 自己的 AppStore 应用程序在选择标签时也不会改变可访问性焦点。
解决方案
我不确定它有多大帮助,但我设法通过延迟发布通知找到了解决方法。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if UIAccessibility.isVoiceOverRunning {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(1.0 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {
UIAccessibility.post(notification: .layoutChanged, argument: self.whateverElementYouNeed)
})
}
}
推荐阅读
- matlab - 位置 __ 中的索引超出数组范围
- python-3.x - 无法在 python 中正确连接字符串
- r - 如何使用 R 中的线索对数据集进行排序
- tcpdf - tcpdf 中的图像完全不适合 pdf
- algorithm - 找到最小生成树成本的最佳方法
- flask - 无法使用 Apache-Superset 应用程序一次连接两个 LDAP 服务器
- javascript - 当事件循环阻止应用程序进行 I/O 操作时?
- c# - 为什么将整数转换为 ASCII 然后再转换为整数后会得到不同的值?
- java - 有没有办法与 Hot Publisher 并行运行多个订阅者。- Reactive java
- javascript - 未检测到魔术头文件已使用这些加载程序处理:* ./node_modules/wasm-loader/index.js