У меня есть UITableView с ячейками, которые я хочу, чтобы пользователь мог изменить порядок, перетаскивая их вверх и вниз, используя «ручки» на правой стороне каждой ячейки.Я НЕ хочу реализовывать функциональность «перетаскивания», потому что данные за этими ячейками не имеют смысла вне этой таблицы (и реализация NSItemProvider выглядит уродливым процессом, учитывая данные за представлением таблицы и ее ячейками).Пока все реализовано и работает отлично.Похоже на результаты этой статьи .
Следующим шагом я хотел бы знать, когда пользователь "поднял" или начал перемещать ячейку - аналогично dragStateDidChange способность, когда один использует перетаскивание.Я хочу получить это уведомление даже до того, как ячейка будет перемещена со своего места - когда пользовательский интерфейс делает фон ячейки белым и «поднимает» его над таблицей.
Как я могу получить этоуведомление, без реализации «перетаскивания»?
Вещи, которые я пробовал, не достигают того, что я хочу:
- Распознавание жеста длинного нажатия: Iдействительно используйте распознаватели жестов в этих ячейках для отводов и т. п .;кажется, что когда пользователь касается ручек перетаскивания, чтобы изменить порядок ячеек, это действие НЕ запускает жест длительного нажатия.Пробовал, но безуспешно.
- Will-select-row-at: я реализую функцию
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath?
в коде UITableViewDelegate;он не вызывается, когда пользователь касается маркеров перетаскивания. - targetIndexPathForMoveFromRowAt: функция
func tableView(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath
срабатывает, когда перетаскиваемая ячейка меняет положение, но не раньше;он НЕ перехватывает начало процесса подъема / перетаскивания, который я ищу. - Аналогично, willBeginEditingRowAt и shouldHighlightRowAt также не вызываются.
- Различные функции scrollView: все они вызываютсякогда пользователь прокручивает всю таблицу, а не когда он переупорядочивает ее.
- Отслеживание «установки редактирования»: маркеры перетаскивания должны присутствовать всегда, поэтому для «редактирования» всегда задано значение true.
- Несколько похожий вопрос , к сожалению, без ответа, который я могу использовать (и также не в Swift).
Я подозреваю, что должно быть простое уведомление о том, чтоЯчейка была поднята и перемещается с помощью ручек, даже если она еще не была перемещена достаточно далеко, чтобы находиться выше или ниже своего прежнего места.В конце концов, ОС «знает» об этом, потому что она меняет фон и добавляет тени и так далее.Любая помощь, получающая доступ к этому уведомлению, чтобы другой код мог ответить на него, была бы очень признательна!