如何将 UICollectionViewDiffableDataSource reorderHandlers 与自定义组合布局一起使用?

Tom*_*ing 5 ios uicollectionview uicollectionviewdiffabledatasource

从 iOS 14 开始,UICollectionViewDiffableDataSource 有一个reorderHandlers属性。它在一些示例代码中进行了演示,并在WWDC 2020关于可比较数据源的进展的会议中进行了讨论。演示者指出您必须提供一个canReorderdidReorder闭包才能启用该功能。

示例代码在具有列表布局配置的集合视图中使用它,并使用重新排序附件配置列表单元格。和canReorder方法didReorder按预期调用。但是,如果我从单元中删除重新排序配件,重新排序将不再起作用 - 它不会调用任何一个关闭。它在我的应用程序中也不起作用,我在应用程序中有一个使用组合布局的网格布局。

如何在UICollectionViewDiffableDataSource没有列表单元的情况下启用重新排序并重新排序配件?

Tom*_*ing 1

我在 WWDC 2022 的虚拟实验室中与另一位工程师讨论过这一点,看来重新订购配件只是为了方便。该功能也可以更手动地实现。文档位于“交互式重新排序项目”下。我们可以使用自己的手势识别器来知道何时开始拖动,并beginInteractiveMovement在确定要移动哪个项目后调用。

canReorderItem必须返回 true 才能正常工作。

YMMV。玩得开心!