适用于TableViewCell中的CollectionView的iOS辅助function

我目前正在研究我们的项目的可访问性,这里是UICollectionView被放入一个自定义的UITableViewCell。 这个CollectionView有几十个单元格,而不是一行排列成多行。

它提出了一个问题,当你有voiceOver并通过向左或向右滑动collectionViewCells之间移动焦点,系统认为你在tableViewCells之间滑动,因为collectionView在tableView中,并且tableView的contentOffSet将根据tableViewCell大小,而不是collectionViewCell大小。

CollectionView已经放在tableView中,我不认为我可以改变这一点。 所以只是想知道有人遇到过这种情况之前,无论如何,使collectionView正常访问?

当在一个tableView中嵌套一个collectionView的时候,这是Apple SDK中一个已知的bug(对不起,我没有bug报告的参考)。 经过一番实验后,我可以通过使用UIView作为我的collectionView的包装,然后将其添加到我的UITableViewCell的.contentView

UIView *wrapperView = [[UIView alloc] initWithFrame:cell.contentView.bounds]; wrapperView.accessibilityElements = @[collectionView]; [cell.contentView addSubview:wrapperView]; [wrapperView addSubview:collectionView]; 

通过重构整个页面来解决问题,下面是两件事情不能使您的应用程序更容易访问:

  1. 避免直接添加子视图到tableView / collectionView中

    [tableView / collectionView addSubview:yourSubView];

  2. 避免将垂直滚动的collectionView添加到tableViewCell。

    添加一个水平滚动的collectionView到tableViewCell似乎不会导致任何问题。