UIcollectionViewCell(UItableviewcell)长按删除操作

功能简单,陷阱不少:
主要涉及两个功能:
1、长按手势:UILongPressGestureRecognizer
2、cell自带的删除操作:deleteItemsAtIndexPaths

首先为cell添加长按手势:

UILongPressGestureRecognizer* longgs=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longpress:)];
    [cell addGestureRecognizer:longgs];//为cell添加手势
    longgs.minimumPressDuration=1.0;//定义长按识别时长
    longgs.view.tag=indexPath.row;//将手势和cell的序号绑定
    return  cell;

此处注意 [cell addGestureRecognizer:longgs];和longgs.view.tag=indexPath.row;的位置顺序,不能颠倒,要先绑定手势,再赋值tag,因为longs.view中的view实际上就是手势添加到的视图,如果还没有绑定手势,view实际上是没有的。

然后就是调用的删除功能的函数:

-(void)longpress:(UILongPressGestureRecognizer*)ges{
    if(ges.state==UIGestureRecognizerStateBegan){
       //获取目标cell
       NSInteger row=ges.view.tag;
        //删除操作
        if(self.cellcount.count>1){
        NSIndexPath *index =[NSIndexPath indexPathForRow:row inSection:0];
        NSArray* deletearr=@[index];
            [self.colview deleteItemsAtIndexPaths:deletearr];
        }else{
            [self.colview reloadData];

        }
    }
}

这里要注意两点:
1、要对state进行判定,如果没判定会出现两次操作。
2、自带的cell删除操作deleteItemsAtIndexPaths在只剩最后一个cell调用时会出现奔溃,所以这里要进行判定,当为最后一个时,直接reloadData。(其实都用reloadData都行,不过调用deleteItemsAtIndexPaths会有一个剩余cell的移动动画)

时间: 2024-09-25 22:27:13

UIcollectionViewCell(UItableviewcell)长按删除操作的相关文章

UITableviewcell的删除操作

//编辑类型 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleDelete; } //允许编辑 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSInde

结构体链表-c语言链表,输入输出正确但是删除操作报错

问题描述 c语言链表,输入输出正确但是删除操作报错 #include#include#define len sizeof(struct student) struct student{int num;float score;struct student *next;}; struct student *creat(void) // 建立{struct student *p1*p2*head;int n=0;p1=p2=(struct student *)malloc(len);scanf("&q

Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item

本文为原创博客,出自http://blog.csdn.net/minimicall 到今天为止,搜芽的卖家版本应该来说已经基本完成,攻坚克难的一路过来.速度也控制的比较好. 项目过程进度 从任务分配量上来看,基本还是我个人英雄主义.接下来这样不行.但暂时也没办法,师弟还需要一个学习的过程.智质不错,而且态度端正.相信搜芽买家,他就可以承担更多的开发任务了. 接下来进入正题,说我们的PullToRefresh的点击事件.其实,我是想做长按进入删除的. 见效果图.当然这个是我做出来之后的了,但做出来

Android仿QQ长按删除弹出框功能示例

废话不说,先看一下效果图,如果大家感觉不错,请参考实现代码: 对于列表来说,如果想操作某个列表项,一般会采用长按弹出菜单的形式,默认的上下文菜单比较难看,而QQ的上下文菜单就人性化多了,整个菜单给用户一种气泡弹出的感觉,而且会显示在手指按下的位置,而技术实现我之前是使用popupWindow和RecyclerView实现的,上面一个RecyclerView,下面一个小箭头ImageView,但后来发现没有必要,而且可定制化也不高,还是使用多个TextView更好一点. 我封装了一下,只需要一个P

[LeetCode] Delete Operation for Two Strings 两个字符串的删除操作

Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string. Example 1: Input: "sea", "eat" Output: 2 Explanation: You ne

使用FSO按文件大小浏览文件目录并进行删除操作

下面介绍FSO按文件大小浏览文件目录并进行删除操作的方法: <%@ Language=VBScript %> <%Server.ScriptTimeout=50000%> <HTML> <HEAD> <META NAME=\"GENERATOR\" Content=\"Microsoft Visual Studio 6.0\"> <meta http-equiv=\"Content-Type

ASP.NET2.0中对GridView删除操作时“未能找到带参数的非泛型方法”的解决方案

asp.net|解决 在ASP.Net中对ObjectDataSource自动配置数据源的[删除]操作的时候,会生成两个字段一个是 OldValuesParameterFormatString="original_{0}" 另外一个是 <DeleteParameters>   <asp:Parameter Name="original_XML_ID" Type="Int32" /></DeleteParameters

数据库组件 Hxj.Data (六)(删除操作篇)

上节讲述数据库更新操作,本节将讲述删除操作. 上代码: //删除 条件 ProductID=2 int returnvalue = DbSession.Default.Delete<Products>(Products._.ProductID == 2); Delete很简单,只要加了条件就可以了. 与之等效的还有如下操作: int returnvalue = DbSession.Default.Delete<Products>(2); 这里的参数 "2" 等效

Windows中无法对特殊文件名木马进行删除操作

        我们都知道,木马病毒的特点是隐蔽,一旦暴露了,那么用杀毒软件查杀一下就OK了,即使是某些比较顽固的木马病毒,最多也只要进入安全模式进行查杀 即可.但是有一类木马病毒却不同,它们不仅具有木马病毒的隐藏特点,同时还极难清除.为什么这些特殊文件名木马病毒难以清除干净呢? 为什么Windows中无法对特殊文件名木马进行删除操作呢? 这些木马病毒利用了Windows的一些"漏洞",建立了一个特殊文件名的程序或文件夹,而在Windows中,我们是无法对其进行删除操作的.那么怎样才能