欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS UICollectionViewCell 的拖动

发布时间:2025/7/14 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS UICollectionViewCell 的拖动 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.长按cell的情况下实现拖动,所以理应想到用长按手势。

2.既然实现移动cell,就要看看UICollectionView 有没有方法或者协议可以移动的。通过查看UICollectionView的协议方法,可以在UICollectionViewDataSource中看到有两个方法。

- (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath; - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath;

 3.OK 知道了以上两个步骤,那么就可以开始写代码了。

// 设置手势 - (void)setupGesture {UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlelongGesture:)];[self.collectionView addGestureRecognizer:longPress]; } - (void)handlelongGesture:(UILongPressGestureRecognizer *)longGesture {//判断手势状态switch (longGesture.state) {case UIGestureRecognizerStateBegan:
    {
//判断手势落点位置是否在路径上NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[longGesture locationInView:self.collectionView]];if (indexPath == nil) {break;}//在路径上则开始移动该路径上的cell [self.collectionView beginInteractiveMovementForItemAtIndexPath:indexPath];}break;case UIGestureRecognizerStateChanged://移动过程当中随时更新cell位置 [self.collectionView updateInteractiveMovementTargetPosition:[longGesture locationInView:self.collectionView]];break;case UIGestureRecognizerStateEnded://移动结束后关闭cell移动 [self.collectionView endInteractiveMovement];break;default:[self.collectionView cancelInteractiveMovement];break;} } - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath{//返回YES允许其item移动return YES; } - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath {//取出源item数据id objc = [_dataSource objectAtIndex:sourceIndexPath.item];//从资源数组中移除该数据 [_dataSource removeObject:objc];//将数据插入到资源数组中的目标位置上 [_dataSource insertObject:objc atIndex:destinationIndexPath.item]; }

注:_dataSource 是你的数据源。

 

转载于:https://www.cnblogs.com/peaker-wu/p/5359510.html

总结

以上是生活随笔为你收集整理的iOS UICollectionViewCell 的拖动的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。