阻止VoiceOver导航UICollectionView的其他页面

时间:2014-12-30 04:25:13

标签: ios uiscrollview uicollectionview voiceover uiaccessibility

我有一个分页UICollectionView,允许用户水平滑动集合视图单元格。它有两个页面,但有时我想禁用它,以便用户无法浏览第一页。

我目前正在numberOfPages上将页面控件1设置为scrollEnabled = falsecollectionView,这确实会阻止用户从三指滑动转到其他页面,但它不会阻止使用其他方法访问该页面。如果他们点击集合视图后面的按钮,则他们向左滑动以转到上一个元素,它会聚焦于集合视图第二页上的最后一个单元格。

然后我尝试设置pagingEnabled = false,但是如果用户突出显示第一行中的最后一个单元格然后向右滑动,那么它将滚动以便您可以看到第一页的一半和第二页的一半页面,它突出显示第二页的第一个字符。

如何阻止VoiceOver导航到集合视图的第二页?

2 个答案:

答案 0 :(得分:1)

@joey

这对我有用:

解决方案是从NO

返回accessibilityScroll
- (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction
{
    return NO;
}

现在你的tableview应该在禁用时停止滚动

答案 1 :(得分:0)

我无法找到阻止VoiceOver导航到其他页面的解决方案,但我能够解决问题的原因,这是一个更好的解决方案。

collectionView:numberOfItemsInSection:中检查是否应该只有一个页面,如果是,则运行算法来计算应在该单页中显示的最大单元格数,然后对该数字执行原始计算单元格,最后返回这两个值的min。这将确保只创建可见的单元格,因此不会有额外的页面,这也将提高性能。