iOS高级开发——CollectionView的cell长按事件实现

       我们在使用TableView时,默认有单击或者侧滑删除等操作,但是原生的没有长按操作。而来到CollectionView中,又少了一个侧滑操作。在实际的项目开发中,我们需要使用单击或者长按来进行不同的操作,并获取cell的section和row。所以我们在CollectionView中来实现,在TableView中也是类似。

       该demo我已经上传到  https://github.com/chenyufeng1991/CollectionView  。里面也包含了CollectionView的其他demo。我将在  https://github.com/chenyufeng1991/CollectionView/tree/master/CollectionView%E8%BF%9B%E9%98%B6%E2%80%94%E2%80%94%E8%8E%B7%E5%8F%96Cell%E4%B8%AD%E6%8C%89%E9%92%AE%E7%82%B9%E5%87%BB%E4%BA%8B%E4%BB%B6  。基础上继续进行。

(1)原生cell没有长按事件,我们需要使用手势识别来绑定CollectionView。创建并绑定CollectionView如下:

- (void)viewDidLoad {
  [super viewDidLoad];
  /*
****
*/
  
  //创建长按手势监听
  UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                             initWithTarget:self
                                             action:@selector(myHandleTableviewCellLongPressed:)];
  longPress.minimumPressDuration = 1.0;
  //将长按手势添加到需要实现长按操作的视图里
  [self.collectionView addGestureRecognizer:longPress];
}

(2)处理长按事件:

- (void) myHandleTableviewCellLongPressed:(UILongPressGestureRecognizer *)gestureRecognizer {
  
  
  CGPoint pointTouch = [gestureRecognizer locationInView:self.collectionView];
  
  if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
    NSLog(@"UIGestureRecognizerStateBegan");
    
    NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:pointTouch];
    if (indexPath == nil) {
      NSLog(@"空");
    }else{
      
      NSLog(@"Section = %ld,Row = %ld",(long)indexPath.section,(long)indexPath.row);
      
    }
  }
  if (gestureRecognizer.state == UIGestureRecognizerStateChanged) {
    NSLog(@"UIGestureRecognizerStateChanged");
  }
  
  if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
    NSLog(@"UIGestureRecognizerStateEnded");
  }
}

(3)运行程序,长按cell可以获得该cell的indexPath.section和indexPath.row值。并且注意的是,长按事件和单击事件并不会冲突,彼此没有任何关系,这个是最开心的。这样,我们把CollectionView的功能又进行了扩展。



最近开源的iOS应用,高仿印象笔记  https://github.com/chenyufeng1991/iOS-Oncenote 。欢迎大家点赞并关注项目进度。也可以安装到手机上试玩哦。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!



你可能感兴趣的:(ios,Objective-C,CollectionView,长按cell)