首页 > 解决方案 > 重新排序 UITableView:用户第一次开始使用手柄拖动时的通知

问题描述

我有一个带有单元格的 UITableView,我希望用户能够通过使用每个单元格右侧的“句柄”向上和向下拖动它们来重新排序。我不想实现“拖放”功能,因为这些单元格后面的数据在此表之外没有任何意义(鉴于表视图及其单元格后面的数据,实现 NSItemProvider 看起来是一个丑陋的过程)。到目前为止,一切都已实施并且工作正常。看起来有点像这篇文章的结果。

下一步是,我想知道用户何时“抬起”或开始移动单元格——类似于使用拖放时的dragStateDidChange能力。我想在单元格被移出原位之前收到此通知——因为 UI 将单元格背景变为白色并将其“提升”到表格上方。

如何在不实施“拖放”的情况下获得此通知?

我尝试过的事情并没有达到我想要的效果:

我怀疑必须有一个简单的通知,表明单元格已被抬起并正在使用手柄拖动,即使它尚未移动到足以高于或低于其旧位置的距离。毕竟,操作系统“知道”这一点,因为它改变了背景并添加了阴影等等。任何访问该通知以便其他代码也可以响应它的帮助将不胜感激!

标签: iosswiftuitableview

解决方案


有点奇怪,这些没有记录,但是您可以在您的UITableViewController(或在UITableViewDelegate)中定义以下函数,这些函数将分别在单元格拖动开始或结束时调用:

@objc func tableView(_ tableView: UITableView, willBeginReorderingRowAtIndexPath indexPath: IndexPath) {
    // Dragging started
}

@objc func tableView(_ tableView: UITableView, didEndReorderingRowAtIndexPath indexPath: IndexPath) {
    // Dragging ended
}


推荐阅读