UITableView нажмите и удерживайте + перетаскивание

Я хотел узнать, как сделать следующее:

У меня есть UItableView, который входит в режим редактирования, когда пользователь удаляет и удерживает одну из строк

Как только он войдет в режим редактирования, мне нужно, чтобы ячейка оставалась выбранной и давала эффект всплывания под пальцем пользователя.

Пользователь должен иметь возможность перетаскивать выведенную ячейку и перемещать ее в другую строку, не поднимая палец.

Что у меня уже есть:

У меня есть длинный идентификатор распознавания жестов, и я установил таблицу в редактирование в селекторе длинного переключателя жестов.

Однако для того, чтобы перетащить ячейку, мне в настоящее время требуется поднять палец и повторно нажать, чтобы перетащить ячейку, чего я не хочу.

Любая помощь будет оценена.

Ответ 2

В настоящий момент существует обходное решение (не так просто): fooobar.com/questions/471374/....

И я нашел фрагмент кода здесь: https://github.com/FlorianMielke/FMMoveTableView

"FMMoveTable - это подкласс UITableView, который обеспечивает перемещение строк простым нажатием и удерживанием соответствующей строки без переключения таблицы в режим редактирования" - из описания

Ответ 3

В статье Переупорядочение UITableViewCell из любой точки касания обсуждается этот точный сценарий.

По существу вы делаете следующее:

  • Найдите UITableViewCellReorderControl (частный класс).
  • Разверните его, чтобы он охватывал всю ячейку.
  • Скрыть его.
  • Теперь пользователь сможет перетаскивать ячейку из любого места.

Другое решение, "Поваренная книга: перемещение табличных ячеек с длинным жестом нажатия" , дает такой же эффект, делая следующее:

  • Добавьте в табличный вид длинный идентификатор распознавания жестов.
  • Создайте моментальный снимок ячейки при перетаскивании ячейки.
  • Когда ячейка перетаскивается, переместите снимок вокруг и вызовите -[UITableView moveRowAtIndexPath:toIndexPath:].
  • Когда этот жест заканчивается, скройте снимок ячейки.

Ответ 4

Для справки в будущем... У меня была такая же проблема, я нашел еще один вопрос (Swift - Drag And Drop TableViewCell с длинным распознавателем жестов) об этом, и кто-то предложил этот учебник: https://www.freshconsulting.com/create-drag-and-drop-uitableview-swift/ работал отлично для меня