UITableView单元格重新sorting拖动操作意外停止

我想弄清楚如何debugging以下scheme,以了解为什么UITableView单元不会重新sorting。

  1. 触摸“编辑”菜单项,将表视图置于编辑模式。
  2. 编辑模式适用于删除单元格。
  3. 尝试通过触摸并拖动单元格上的重新sorting控件来重新sorting单元格。
  4. 细胞轮廓在拖动方向上移动了几个像素,但是随后即使通过我的手指仍然在屏幕上拖动,也会回到原始位置。

在代码中:

  • UITableViewDelegate:targetIndexPathForMoveFromRowAtIndexPath永远不会被调用。 这看起来与用户界面的反馈相一致,即在单元格位于另一个单元格之前,单元格会回弹到初始位置。
  • UITableViewDataSource:canMoveRowAtIndexPath对所有行都返回true。
  • UITableViewDataSource:moveRowAtIndexPath只要单元快速恢复到原始位置,就会始终被调用,并且sourceIndexPath和destinationIndexPath值是相同的。 –

相同的视图控制器代码和故事板可以正确地在另一个项目中重新sorting单元格。

我已经search了stackoverflow和Google一天,找不到任何引用将导致单元格拖动事件被取消的任何参考。

任何想法如何我可以方法debugging这个问题将不胜感激!

我find了答案,它与UITableView代码无关。

我的代码有一个编程创build的根视图控制器,处理显示/隐藏滑动菜单面板。

该视图控制器的viewDidLoad()创build一个panGestureRecognizer来跟踪滑动来显示/隐藏滑动菜单。 这个panGestureRecognizer没有通过触摸。

添加这个代码解决了这个问题:

panGestureRecognizer.cancelsTouchesInView = false