longPressジェスチャーをcollectionView
に追加し、システムAPIを使用してコレクションの並べ替えを実装します。ここに私のコードです:セルを一番下または上にドラッグすると、 `collectionView`の並べ替えが中止されます。
CGPoint point = [sender locationInView:_collectionView];
NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:point];
if (!indexPath) {
return;
}
DragableCollectionViewCell *tempCell = (DragableCollectionViewCell *)[_collectionView cellForItemAtIndexPath:indexPath];
switch (sender.state) {
case UIGestureRecognizerStateBegan: {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
[tempCell showDeletButton];
[tempCell.deleteButton zkj_addEventHandler:^(id sender) {
[tempCell hideDeleteButton];
[self.dataSource[indexPath.section] removeObjectAtIndex:indexPath.item];
[self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
} withControlEvents:UIControlEventTouchUpInside];
[_collectionView beginInteractiveMovementForItemAtIndexPath:indexPath];
}
break;
case UIGestureRecognizerStateChanged: {
[_collectionView updateInteractiveMovementTargetPosition:point];
}
break;
case UIGestureRecognizerStateEnded: {
[_collectionView endInteractiveMovement];
}
break;
default:
[_collectionView cancelInteractiveMovement];
break;
}
と私は正しくcollectionView
のデータソースとデリゲートを実装しました。その後、それは動作します、私はドラッグセルを移動し、並べ替えcollectionView
を並べ替えることができます。しかし、セルを下または上にドラッグすると、セルは下または上に停止し、collectionView
は自動的に並べ替えられません。 IOS-11で
私はあなたのリンクを開くことができません。 「UICollectionViewで並べ替えのためのドラッグ&ドロップAPI」の詳細を知る方法を教えてください。私はカスタム実装を使用していませんでした.iOS-9 @PGDevでAPIを使用しています –
リンクはうまく動作しています。あなたはリンクをクリックした後何を得ていますか? – PGDev
https://medium.com/@p.gpt10/drag-it-drop-it-in-collection-table-ios-11-6bd28795b313 – PGDev