UICollectionView可拖動,并且某個cell不能動

第一步給cell添加長按方法

    UILongPressGestureRecognizer *lgest = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longclick:)];
    if (self.isedit) {
        if ([model.isDefault isEqualToString:@"1"]) {//不能移動的
            cell.Image_Icon.hidden =YES;
            [cell removeGestureRecognizer:lgest];
        }else
        {
            [cell addGestureRecognizer:lgest];
        }
        
    }else
    {
        [cell removeGestureRecognizer:lgest];
    }

第二步觸發(fā)的方法

-(void)longclick:(UIGestureRecognizer *)gar{

switch (gar.state) {

  case UIGestureRecognizerStateBegan:

      if([self.collectionView indexPathForItemAtPoint:[gar locationInView:self.collectionView]] == nil){

         break;

      }

      [self.collectionView beginInteractiveMovementForItemAtIndexPath:[self.collectionView indexPathForItemAtPoint:[gar locationInView:self.collectionView]]];

      

      break;

  case UIGestureRecognizerStateChanged:
   {
       //固定某個Cell不能移動
       NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[gar locationInView:self.collectionView]];
       
       MenuInfoModel *model =self.dataSource[indexPath.row];
       if ([model.isDefault isEqualToString:@"1"]) {
           return;
       }
       
       [self.collectionView updateInteractiveMovementTargetPosition:[gar locationInView:self.collectionView]];
   }
         
    
      break;

  case UIGestureRecognizerStateEnded:

      [self.collectionView endInteractiveMovement];

      

      break;

  default:

      [self.collectionView cancelInteractiveMovement];

      break;

}

}

//第三步:設定單位格可移動

-(BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath{

return YES;

}

//第四步:改變數(shù)據(jù)源順序

-(void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{

// FLmodel *model = [_dataSource objectAtIndex:sourceIndexPath.item];
MenuInfoModel *model =[self.dataSource objectAtIndex:sourceIndexPath.item];

[_dataSource removeObject:model];

[_dataSource insertObject:model atIndex:destinationIndexPath.item];

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容