在我看来有UITableView
时,我对VoiceOver的行为有疑问。
如果我返回ViewController VoiceOver跳转到之前选择的单元格,选择表格的单元格以触发segue。
在我的didSelectRowAtIndexPath
中,我致电tableView.deselectRowAtIndexPath(indexPath, animated: true)
以阻止该单元格保持被选中状态。
我尝试在UIAccessibilityLayoutChangedNotification
中发布UIAccessibilityScreenChangedNotification
或viewDidAppear
,但没有任何变化。
所以我的问题是:这是VO的正确行为吗?
当视图出现时,我该怎么做才能始终专注于后退按钮?
答案 0 :(得分:0)
您是否传递了您想要关注的项目?如:
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.navigationController.navigationItem.backBarButtonItem);
否则在viewDidAppear
中你可以循环遍历所有可见的单元格并在关注时关闭辅助功能,然后立即将其重新打开
for(UITableViewCell *cell in self.tableView.visibleCells) {
if (cell.accessibilityElementIsFocused) {
cell.isAccessibilityElement = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
cell.isAccessibilityElement = YES;
});
}
}
绝对不是一种优雅的方法,但可能会有所作为。
答案 1 :(得分:0)
这会将画外音集中在第一个导航栏元素(后退按钮)上:
UIAccessibility.post(notification: .layoutChanged,
argument: navigationController?.navigationBar)