我有一个视图控制器,其中包含一个表格视图以及一些“浮动”控件,这些控件直观地显示在屏幕底部。
使用VoiceOver导航时,用户进行如下导航更有意义:
但目前,导航顺序为
当我为视图控制器的视图显式设置可访问性元素以更改顺序时,例如
- (void)viewDidLoad {
self.accessibilityElements = @[self.floatingButton, self.tableView];
}
导航顺序变为
并且导航栏不再可用。
如果我在self.navigationController.navigationBar
数组的开头包含accessibilityElements
,那么我会得到导航顺序
然后再次向右轻扫将导航回到“后退”按钮,因此我无法到达浮动按钮或表格内容。
是否可以在不失去对导航栏访问的情况下重新排序可访问子视图?
答案 0 :(得分:1)
在此故事板之后,我尝试并重现了您在空白项目中提到的问题: 我阅读了此a11y recommendations site,以提供我实现的该代码段,以使其按需运行:
class TestButtonTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var myTableView: UITableView!
@IBOutlet weak var bottomButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self as UITableViewDelegate
myTableView.dataSource = self as UITableViewDataSource
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.accessibilityElements = [bottomButton, myTableView]
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return zeCell = tableView.dequeueReusableCell(withIdentifier: "myPersoCell",
for: indexPath)
}
}
我制作了right flicks以获得下一个元素,并获得了以下插图: VoiceOver导航遵循所需的模式:
我没有特别说明,并且在不丢失对导航栏的访问权限的情况下更改了视图控制器中辅助功能元素的顺序。