TableViewCell中的CollectionView的iOS可访问性

时间:2016-02-25 21:07:25

标签: ios uicollectionview tableview accessibility voiceover

我目前正致力于项目的可访问性,这里是放入自定义UITableViewCell的UICollectionView。这个CollectionView有几十个单元格,它们以多行而不是一行排列。

它引发了一个问题,当你打开voiceOver并通过向左或向右滑动在collectionViewCells之间移动焦点时,系统认为你在tableViewCells之间滑动,因为collectionView在tableView中,而tableView的contentOffSet将是根据tableViewCell大小而不是collectionViewCell大小进行更改。

CollectionView已经放在tableView中了,我不认为我可以改变它。所以只是想知道以前有没有人遇到过这个案例,无论如何都要使collectionView正常访问?

2 个答案:

答案 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)

只需通过重新构建整个页面来解决问题,这里有两件事无法让您的应用更易于访问:

  1. 避免将子视图直接添加到tableView / collectionView,如

    [tableView / collectionView addSubview:yourSubView];

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

    将一个可水平滚动的collectionView添加到tableViewCell似乎不会引起任何问题。