当 UICollectionView 更改布局时覆盖 UIAccessibilityLayoutChangedNotification
Posted
技术标签:
【中文标题】当 UICollectionView 更改布局时覆盖 UIAccessibilityLayoutChangedNotification【英文标题】:Override UIAccessibilityLayoutChangedNotification when UICollectionView changes layout 【发布时间】:2016-03-18 14:46:03 【问题描述】:我正在尝试在我的收藏视图上启用画外音辅助功能。 1.选择一个项目后,它将删除该部分中的其余项目,只留下被选中的项目。 2. 当我再次选择该项目时,它会使用之前删除的项目重新填充该部分。
对于第 1 步,画外音可以很好地读出项目,并且它将成为布局更改后的焦点。
但是,对于第 2 步,事情变得有点奇怪。它会开始读出该项目,在它完成之前,焦点会跳转到另一个项目,并开始阅读那个项目。
根据 Apple 关于集合视图的文档,它会在布局发生时自动发布布局更改通知。但是,从外观上看,它是在布局更改后将一些随机元素传递给第一个焦点元素。
当集合视图更改其屏幕布局时,它会发布 UIAccessibilityLayoutChangedNotification 通知。
有没有办法覆盖这个自动布局更改通知,以便我可以传入正确的焦点元素?
【问题讨论】:
为什么不发布您自己的布局更改通知? 【参考方案1】:我找到了发生这种情况的原因。 一个元素随机聚焦的原因是因为我在 performBatchUpdate 的完成块中的 collectionview 上调用了 reloadData。 删除 reloadData 解决了这个问题。但是,因为我没有调用 reloadData,所以我必须在特定单元格上调用 reloadItemsAtIndexPaths,这对我来说很好。
【讨论】:
以上是关于当 UICollectionView 更改布局时覆盖 UIAccessibilityLayoutChangedNotification的主要内容,如果未能解决你的问题,请参考以下文章
如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?
在UICollectionView上动态设置布局会导致无法解释的contentOffset更改