Проведите пальцем, чтобы удалить UITableViewCell очень трудно вызвать
Итак, у меня есть табличное представление, и я бы хотел, чтобы пользователь мог провести пальцем влево, чтобы показать кнопку удаления, идентично тому, как это работает в почтовом приложении. Моя проблема не в том, что я не могу заставить это работать - он делает, я могу провести пальцем по строке влево, он показывает кнопку удаления, и пользователь может щелкнуть по нему, чтобы удалить ячейку (я делаю это, используя editStyleForRowAtIndexPath). Моя проблема заключается в том, что проведенное сканирование крайне нечувствительно. Вы должны провести очень быстро и идеально по горизонтали. Это не так гладко, как смахивание по почте. Это просто так или я что-то упускаю?
Я подумал, что, может быть, взгляды в камере каким-то образом блокируют жест смахивания, но я вошел в черту и установил все на скрытое, а смахивание по-прежнему крайне сложно. Другая вещь, которую я попробовал, - добавить собственный распознаватель жестов, чтобы запустить шоу удаления. Я попытался добавить его в ячейку (это не сработало), к табличному представлению (нет), и я также попытался добавить прозрачный цветной UIView в качестве переднего подпредставления и поместить его на это, но все еще нет. Есть идеи?
РЕДАКТИРОВАТЬ: Я только что создал новый проект, чтобы проверить отзывчивость функции удаления стиля редактирования - очень очень простое представление таблицы, просто чтобы посмотреть, как она работает. Гораздо проще провести пальцем, чем в моем реальном проекте. Существует не так много различий между моим тестовым проектом и моим фактическим: фактическая загрузка xib в cellForRowAtIndexPath, в то время как в тестовом проекте он использует ячейку в стиле по умолчанию, реальный проект имеет изображения и uilabels внутри ячейки, в то время как тестовый проект - просто uilabel... что может сделать его таким безразличным?
2 ответа
Оказывается, в суперклассе был спрятан конкурирующий распознаватель жестов, о котором я совершенно не подозревал. Как только я понял это, это было легко решено отключением другого распознавателя для этого экрана (хотя я думаю, что был бы более правильный способ сделать это, установив приоритеты распознавателя жестов). В любом случае, если у вас возникают похожие проблемы - действительно странное / неожиданное поведение UIGestureRecognizer - я бы позаботился о том, чтобы не вмешивались другие средства распознавания жестов.
Вы могли бы попытаться "свернуть свое". Во встроенном UITableView мы, вероятно, отвечаем на распознаватель жестов влево (жест, для которого, как вы говорите, должен быть быстрым и очень горизонтальным, чтобы его можно было распознать). С другой стороны, в Mail это работает так, что содержимое ячейки на самом деле содержит UIScrollView, который можно прокручивать только по горизонтали - и это то, что вы делаете, когда скользите влево, просто перетаскивая, как при любом просмотре прокрутки., (Вот почему вы можете посмотреть на кнопку "Удалить", а затем перетащить сообщение вправо.)