我希望在锁定第一个 n 单元格时提供UICollectionView重新排序选项。
为了表示第一个 n 单元格被“锁定”(无法重新排序),我想将它们的背景颜色更改为浅灰色。
到目前为止,我已经能够通过targetIndexPathForMoveFromItemAt
override func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath {
// Gray out illegal moves
for i in lockedIndex_start...lockedIndex_end {
collectionView.cellForItem(at: IndexPath(item: i, section: 0))?.backgroundColor = UIColor.groupTableViewBackground
}
/* Check if user made an illegal move
If Yes:
Switch back
Else:
Update users personal order
*/
if proposedIndexPath.item > lockedIndex_end {
return proposedIndexPath
}else{
return originalIndexPath
}
}
我遇到的问题是检测用户何时释放重新排序单元格,以便我可以将锁定单元格的背景颜色设置为正常。
我已经尝试使用moveItemAt
,但是当用户激活重新排序但最终将原始单元格放回原始索引或者重新排序被取消时,不会调用它。
我已尝试使用didUnhighlightItemAt
,但该方法会在targetIndexPathForMoveFromItemAt
之后立即调用,而不是在用户释放单元格之后调用。