UITableView 点击并按住 + 拖放

Posted

技术标签:

【中文标题】UITableView 点击并按住 + 拖放【英文标题】:UITableView tap and hold + drag and drop 【发布时间】:2012-06-21 02:29:31 【问题描述】:

我想了解如何执行以下操作:

我有一个 UItableView,当用户点击并按住其中一行时,它会进入编辑模式

一旦它进入编辑模式,我需要单元格保持选中状态并在用户手指下给出弹出的效果。

用户应该能够拖动弹出的单元格并将其重新定位到另一行,而无需抬起手指。

我已经拥有的东西:

我有一个长按手势识别器,我将表格设置为在长按手势识别器选择器中进行编辑。

但是,为了拖动单元格,我目前需要抬起手指并重新点击以拖动单元格,这不是我想要的。

任何帮助将不胜感激。

【问题讨论】:

更好的代码 sn-p 在这里:见github.com/bvogelzang/BVReorderTableView。 (在 Xcode 6.x 和 ios 8 中测试) Reordering UITableView without reorder control的可能重复 【参考方案1】:

目前有一个解决方法(不够简单):https://***.com/a/7501076/326017。

我在这里找到了代码 sn-p:https://github.com/FlorianMielke/FMMoveTableView

“FMMoveTable 是一个 UITableView 子类,它通过简单地点击并按住适当的行而不将表格切换到其编辑模式来提供移动行” - 来自描述

【讨论】:

这里可能有更好的 sn-p:请参阅 github.com/bvogelzang/BVReorderTableView。没有故障。【参考方案2】:

文章Reordering a UITableViewCell from any touch point 讨论了这个确切的场景。

基本上你会做以下事情:

    找到UITableViewCellReorderControl(私有类)。 将其展开,使其跨越整个单元格。 隐藏它。 用户现在可以从任意位置拖动单元格。

另一个解决方案,Cookbook: Moving Table View Cells with a Long Press Gesture,通过执行以下操作达到相同的效果:

    在表格视图上添加长按手势识别器。 拖动单元格时创建单元格快照。 拖动单元格时,四处移动快照,然后调用-[UITableView moveRowAtIndexPath:toIndexPath:]。 手势结束后,隐藏单元格快照。

【讨论】:

以上是关于UITableView 点击并按住 + 拖放的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack DragAndDrop 库——拖放操作如此轻松

在 iOS 应用程序中更改 rootviews 视图类型

UITableView:制作单独的部分并添加标题和副标题

DataGridView多行选择清除鼠标左键拖放

注释显示标注而不是开始拖放操作

用部分动态填充分组的 uitableView