在拖放编辑模式下,UITableViewCell不会超越它的行

时间:2015-07-23 23:03:29

标签: ios swift uitableview

我跟随this official documentation by Apple。我试图在UITableView上实现拖放功能。问题是,行不会移动通过他们的行。如你所见,他们总是反弹:

Bouncing

这是我的代码:

func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
{
    // This gets called, when I reach a UITableViewCell above or below
    // the one UITableViewCell I'm dragging around. This is the part
    // where it always snaps back I think.
}

func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath
{
    return proposedDestinationIndexPath
}

我使用DZNEmptyDataSet库并不太确定,如果这会干扰UITableView的原始功能。

我在这里缺少什么?

编辑我在项目中创建了一个ViewController TableView,其行为完全相同。但是,如果我尝试在新项目中实现此功能,它只是按预期工作。

1 个答案:

答案 0 :(得分:0)

问题'是另一个图书馆MMDrawerController。在我的TableView上启用修改后,我必须停用MMDrawerController手势。这里的代码解决了我的问题:

///
/// Enable edit mode
///
func editEntries()
{
    self.disableDrawerFunctionality()
    self.tableView.setEditing(true, animated: true)
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Fertig", style: .Plain, target: self, action: "finishedEditing:")
}

func finishedEditing(sender: AnyObject)
{
    self.tableView.setEditing(false, animated: true)
    self.navigationItem.rightBarButtonItem = self.barButtonItemEdit
    self.enableDrawerFunctionality()
}

// MARK: - Toggle Drawer functionalities

///
/// While in TableView edit mode: Be sure to disable the MMDrawer gestures, since the gestures will colide
/// with gestures of the TableView
///
func enableDrawerFunctionality()
{
    mm_drawerController.openDrawerGestureModeMask = .PanningCenterView
    mm_drawerController.closeDrawerGestureModeMask = .PanningDrawerView | .PanningCenterView
}

///
/// When leaving TableView edit mode: Re-enable the MMDrawer gestures after finishing editting the TableView
///
func disableDrawerFunctionality()
{
    mm_drawerController.openDrawerGestureModeMask = .None
    mm_drawerController.closeDrawerGestureModeMask = .None
}

他们自述文件的部分引起了我的注意:

  

您可以自由设置打开和关闭所需的任何组合。请注意,这些手势可能会影响发送到子视图控制器的触摸,因此请务必对您的应用程序使用这些手势。例如,如果MKMapView是您的中心视图控制器,则您不希望设置MMOpenDrawerGestureModePanningCenterView,因为它会拦截用于在地图上移动的平移。