前言
一个需求,要求左滑点击删除后出现二次确认。和微信一样。
调研结果如下:
-
iOS11之后,可以通过对系统方法进行改造的方式实现。
-
iOS11之前,系统在点击删除按钮之后会自动对扩展按钮进行回收。无法进行那样的改造。
于是决定自己写一个
由于16年的微信与现在的交互差异太大,所以进行了大量改造,只保留了其对于侧滑菜单的创建以及滑动判定的逻辑基础。
对其中的bug以及功能实现方式进行优化调整,基本实现了现在微信的左滑逻辑功能。
实际效果
伸手党福利,先看效果不满意直接右上角就好了。
由于我很懒…所以demo的主体结构基本没改,侧滑菜单创建的逻辑没做太多修改。
Demo在文章最后
具体到主要的代码上
我连demo的文件名都懒得改(当然Cell的名字我改了,毕竟我做了三天才做完),就更别提界面了…
-
新增了一个专门的侧滑容器View
原Demo就是一个VIew,上面循环的创建按钮使用。
由于新版微信需要很多复杂的交互效果(形变,反弹,确认删除等等)
我新建了一个KSSideslipContainerView的容器View。
可以很方便的进行二次操作
-
滚动时收起侧滑菜单
原Demo中侧滑展示时,是滑动交互式关闭的。
这里我通过NSProxy对tableView的滑动代理进行拦截
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if (self.target.sideslip) { [self.target hiddenAllSideslip]; } if ([self.tbDelegate respondsToSelector:@selector(scrollViewWillBeginDragging:)]) { [self.tbDelegate scrollViewWillBeginDragging:sc