UITableViewCell重新排序:单元格停止将10个像素移动到拖动中

时间:2012-01-20 14:43:41

标签: ios cocoa-touch uitableview

我有一个UITableView,我已将其连接起来进行编辑。

点击并按住会导致“替换”动画出现(行被“绘制在”表格的其余部分“上方”)。到目前为止,非常好。

但是,移动行超过大约10个像素会导致单元格返回其原始位置,我永远不会将任何行移动到任何其他位置。

断点显示-tableView:moveRowAtIndexPath:toIndexPath:肯定被调用,尽管索引路径与源行和目标行相同。

任何心灵调试人员都可以对此有所了解吗?

修改 一些更相关的信息:

UILongPressGestureRecognizer上有一个UITableViewCell,但是当它包含的表格视图处于编辑模式时,我已经跳过了它的常规行为。

我怀疑这可能与它有关,因为UITableView重新排序也是由长按引发的。

2 个答案:

答案 0 :(得分:2)

可能我为你找到了一个解决方案,但是对于遇到相同行为的其他人来说可能会有所帮助。您遇到的问题是UILongPressGestureRecognizer干扰了单元格重新排序控制的长按。您可以通过在UILongPressGestureRecognizer上添加cell.contentView而不是将其添加到单元格来避免此行为,因为重新排序控制它不在单元格的contentView中。

答案 1 :(得分:0)

移动tableview的单元格时,是否也移动了他们的数据源?

例如,

NSString* stringToBeMoved = [myArray objectAtIndex:[sourceIndexPath row]];
[stringToBeMoved retain];
[myArray removeObjectAtIndex:[sourceIndexPath row]];
[myArray insertObject:stringToBeMoved atIndex:[destinationIndexPath row]];
[stringToBeMoved release];