标签:
我们在使用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]; }
- (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"); } }
最近开源的iOS应用,高仿印象笔记 https://github.com/chenyufeng1991/iOS-Oncenote 。欢迎大家点赞并关注项目进度。也可以安装到手机上试玩哦。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
iOS高级开发——CollectionView的cell长按事件实现
标签:
原文地址:http://blog.csdn.net/chenyufeng1991/article/details/50037361