我目前正致力于项目的可访问性,这里是放入自定义UITableViewCell的UICollectionView。这个CollectionView有几十个单元格,它们以多行而不是一行排列。
它引发了一个问题,当你打开voiceOver并通过向左或向右滑动在collectionViewCells之间移动焦点时,系统认为你在tableViewCells之间滑动,因为collectionView在tableView中,而tableView的contentOffSet将是根据tableViewCell大小而不是collectionViewCell大小进行更改。
CollectionView已经放在tableView中了,我不认为我可以改变它。所以只是想知道以前有没有人遇到过这个案例,无论如何都要使collectionView正常访问?
答案 0 :(得分:17)
这是Apple的SDK中的一个已知错误(抱歉,我没有错误报告参考),在tableView中嵌套collectionView。经过一些实验,我可以通过使用UIView作为我的collectionView的包装器来解决它,然后再将它添加到我的UITableViewCell的.contentView
UIView *wrapperView = [[UIView alloc] initWithFrame:cell.contentView.bounds];
wrapperView.accessibilityElements = @[collectionView];
[cell.contentView addSubview:wrapperView];
[wrapperView addSubview:collectionView];
答案 1 :(得分:0)
只需通过重新构建整个页面来解决问题,这里有两件事无法让您的应用更易于访问:
避免将子视图直接添加到tableView / collectionView,如
[tableView / collectionView addSubview:yourSubView];
避免将可垂直滚动的collectionView添加到tableViewCell。
将一个可水平滚动的collectionView添加到tableViewCell似乎不会引起任何问题。