UITableView单元重新排序拖动操作意外停止

nav*_*r48 5 iphone uitableview ios swift swift2

我正在试图弄清楚如何调试以下场景,以了解为什么UITableView单元格不会重新排序.

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

在代码中:

  • UITableViewDelegate:targetIndexPathForMoveFromRowAtIndexPath永远不会被调用.这似乎与UI反馈一致,即单元格在它进入另一个单元格之前捕捉回原始位置.
  • UITableViewDataSource:canMoveRowAtIndexPath对所有行都返回true.
  • UITableViewDataSource:moveRowAtIndexPath在单元格快速回到原始位置时始终被调用,并且sourceIndexPath和destinationIndexPath值相同. -

相同的视图控制器代码和故事板正确地用于重新排序另一个项目中的单元格.

我已经搜索了stackoverflow和Google一天,并且找不到任何会导致单元格拖动事件被取消的参考.

任何关于我如何处理调试此问题的想法将不胜感激!

nav*_*r48 7

我找到了答案,它与UITableView代码无关.

我的代码有一个以编程方式创建的根视图控制器,用于处理显示/隐藏滑动菜单面板.

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

添加此代码修复了问题:

panGestureRecognizer.cancelsTouchesInView = false
Run Code Online (Sandbox Code Playgroud)