从tableview中移动出tableviewcell效果

昨天群里一个朋友问想实现:长按一个cell,把这个cell从tableviewA,移动到tableviewB中.在移动过程中,要有一个view显示,模拟这个cell.

他说他卡在了touch事件这块.我帮他写了个小demo.

先说说我在写的过程中遇到的问题:

1.scrollview的事件拦截

在写的过程中,我被scrollview整的很崩溃.由于scrollview要判断,touch事件是scroll动作,还是点击事件.

一直想弄明白scrollview是怎么拦截touch事件的..在我的知识面中,ios是有event链的..它怎么搞到respondFirst的..到现在也没明白..

在event链中,touch事件是从最上层view开始的..它怎么能拦截cell的事件.


2.nextResponded的touch事件和super的touch事件的区别

touch事件,可以handle,也可以传递.

主要说传递,至于handle,其实就是不传递么.

[self.nextResponder touchesEnded:touches withEvent:event];


这个调用,就是把event事件传递给event链上,self的下一个object响应该event.

这个和windows中的事件链原理一样的..在windows中,可以挂钩子..让其排在事件链的最后一位.目的是为了第一个响应特定事件.


[super touchesEnded:touches withEvent:event];

是给他让其父类响应touch事件.至于是handle了.还是传递.这就看父类怎么实现了.


3.那个模拟cell的view.移动问题

view在addsubview后,没法响应touch事件..

最后原因是我在初始化view的时候,把那个cell删除掉了..以至于view无法接收touch事件.

就在这个点上.我卡了半天..


这个demo中,我没有实现insert cell的操作..只是实现了delete cell的操作.

demo的核心部分就是touch事件的传递和event链.

至于其他的都好解决.


blog不让上传附件.我就发在cocoachina上了


源码在这里


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值