从iOS 11开始,UICollectionView支持使用drag-and-drop APIs进行重新排序。在collectionView:performDropWithCoordinator:
的实现中,我做了这样的事情:
NSIndexPath *srcPath = [self somehowGetSourceIndexPathForDrag];
NSIndexPath *dstPath = coordinator.destinationIndexPath;
[self.dataSource moveItemAtPath:srcPath toPath:dstPath];
[self.collectionView moveItemAtIndexPath:srcPath toIndexPath:dstPath];
[coordinator dropItem:myDragItem toItemAtIndexPath:dstPath];
一切正常。不过,我发现,如果我实现canMoveItemAtIndexPath
,它将被调用,但是无论我返回什么,一切都会起作用。如果我实现moveItemAtIndexPath:toIndexPath:
,它将不会被调用。
那么在这种情况下使用canMoveItem
和moveItem
有什么意义?还是应该删除它们?