gpt4 book ai didi

ios - UICollectionView 更改 Drop Placeholder 索引路径

转载 作者:行者123 更新时间:2023-11-29 05:27:59 25 4
gpt4 key购买 nike

我想使用拖放来实现以下用户体验。简介:用户应该只能在末尾插入项目。

  1. 用户可以从任何来源拖动项目并将其指向 Collection View 。
  2. 当项目悬卡在 View 上方时,占位符会出现在特定位置,例如在最后。
  3. 当用户释放该项目时,它会以动画方式显示到占位符的索引处。

Drag & Drop UX example - inserting at the end

我可以采用 UICollectionViewDropDelegate 来实现步骤 3 :

func collectionView(
_ collectionView: UICollectionView,
performDropWith coordinator: UICollectionViewDropCoordinator) {

// ...
coordinator.drop(item, toItemAt: endIndexPath)
}

问题在于更改占位符索引,该索引默认位于拖动项下方。我们可以使用collectionView(_:dropSessionDidUpdate:withDestinationIndexPath destinationIndexPath:)提供建议。但 UICollectionViewDropProposal 中没有指定索引路径的变量.

最佳答案

尝试使用collectionView(_:targetIndexPathForMoveFromItemAt:toProposedIndexPath:)。虽然不是最后一个索引,但返回originalIndexPath。

func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath {        
guard proposedIndexPath.item == lastItemIndex // Here should be some logic to calculate the last index
else { return originalIndexPath }
return proposedIndexPath
}

但是,对于某些实现,此函数永远不会被调用。例如,当您使用 UICollectionViewController 时。在这种情况下,返回 .cancel 删除提案 — collectionView(_:dropSessionDidUpdate:withDestinationIndexPath: 中的 UICollectionViewDropProposal(operation: .cancel, Intent: .insertAtDestinationIndexPath) ) 功能:

func collectionView(_ collectionView: UICollectionView,
dropSessionDidUpdate session: UIDropSession,
withDestinationIndexPath destinationIndexPath: IndexPath?)
-> UICollectionViewDropProposal {

guard destinationIndexPath?.item != lastItemIndex // Here should be some logic to calculate the last index
else {
return UICollectionViewDropProposal(
operation: .cancel,
intent: .insertAtDestinationIndexPath)
}
return UICollectionViewDropProposal(
operation: .move,
intent: .insertAtDestinationIndexPath)
}

关于ios - UICollectionView 更改 Drop Placeholder 索引路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com