博客> 【淘宝卡片】cell限制拖动范围
【淘宝卡片】cell限制拖动范围
2019-11-10 19:44 评论:0 阅读:258 Nathanile
ios cell tableview 拖动 Object-c

产品抄袭淘宝卡片效果,实现卡片拖动自定义顺序;一波百度搜狗后,发现完全可以使用tableview当前代理实现效果和功能。 场景:整个tableview分为可拖动section和不可拖动section,且被拖动的cell移到不可拖动section区域,不改变对应cell的位置适配效果 代码实现如下:

设置tableview可编辑

  • (BOOL)tableView:(UITableView )tableView canEditRowAtIndexPath:(NSIndexPath )indexPath { if (indexPath.section == 0) { return YES; } return NO; }

是否允许indexPath的cell移动

  • (BOOL)tableView:(UITableView )tableView canMoveRowAtIndexPath:(NSIndexPath )indexPath { if (indexPath.section == 0) { return YES; } return NO; }

动态监听cell移动的位置,移动到不可拖动section区域时,设置sourceIndexPath

  • (NSIndexPath )tableView:(UITableView )tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath )sourceIndexPath toProposedIndexPath:(NSIndexPath )proposedDestinationIndexPath { if (proposedDestinationIndexPath.section == 1) { return sourceIndexPath; } else { return proposedDestinationIndexPath; } }

cell拖动后,回调的代理方法,实现响应功能逻辑

  • (void)tableView:(UITableView )tableView moveRowAtIndexPath:(NSIndexPath )sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { //已添加的卡片,不能移动到未添加区里面 if (destinationIndexPath.section == 1) {

    } //移动完成后,更新数据 else {

    } }

如此可以实现该功能逻辑,其具体底层实现原理是:设置tableviewcell可编辑后,长按cell,会将对应cell的视图截图为一个image,拖动时,仅仅是移动裁剪的图片,移动完成后,底层完成cell的位置调整,呈现的效果就是cell拖动了。

收藏
0
sina weixin mail 回到顶部