簡體   English   中英

使用UILongPressGestureRecognizer刪除UICollectionViewCell

[英]Delete UICollectionViewCell with UILongPressGestureRecognizer

我有一個從圖片庫填充的UICollectionView

我希望能夠通過在單元格上使用UILongPressGestureRecognizer從集合中刪除單元格。 UILongPressGestureRecognizer正在運行。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Selected cell = %ld",(long)indexPath.item);

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(activateDeletionMode:)];
longPress.delegate = self;
[collectionView addGestureRecognizer:longPress];

}

- (void)activateDeletionMode:(UILongPressGestureRecognizer *)gr
{
if (gr.state == UIGestureRecognizerStateBegan)
{
NSLog(@"delete mode");
}
}

在你的情況下試試這個

    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
    NSLog(@"Selected cell = %ld",(long)indexPath.item);

     UILongPressGestureRecognizer * longPres 
       = [[UILongPressGestureRecognizer alloc]
                     initWithTarget:self action:@selector(activateDeletionMode:)];
   longPres.minimumPressDuration = .5; //seconds
   longPres.delegate = self;
    [self.collectionView addGestureRecognizer: longPres];


    }

    - (void)activateDeletionMode:(UILongPressGestureRecognizer *)gr
    {
    if (gr.state == UIGestureRecognizerStateBegan)
    {
    NSLog(@"delete mode");
    }
    }

在其他情況下,您可以嘗試此

//將長按手勢添加到collectionView

 UILongPressGestureRecognizer *longpress 
       = [[UILongPressGestureRecognizer alloc]
                     initWithTarget:self action:@selector(handleLongpressMethod:)];
    longpress.minimumPressDuration = .5; //seconds
   longpress.delegate = self;
    [self.collectionView addGestureRecognizer: longpress];
}

然后處理動作

-(void) handleLongpressMethod:(UILongPressGestureRecognizer *)gestureRecognizer
{
    if (gestureRecognizer.state != UIGestureRecognizerStateEnded) {
        return;
    }
    CGPoint pt = [gestureRecognizer locationInView:self.collectionView];

    NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:pt];
    if (indexPath == nil){
        NSLog(@"couldn't find index path");            
    } else {
        // get the cell at indexPath (the one you long pressed)
        UICollectionViewCell* cell =
        [self.collectionView cellForItemAtIndexPath:indexPath];
        // work  with the cell


    }

刪除

 [self.youritemarray removeObjectAtIndex:indexPathh];
 [collectionView reloadData];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM