Обнаружение события перетаскивания UITableViewCell

Возможный дубликат:
Как получить уведомление о запуске и окончании перемещения UITableViewCell

Я реализовал UITableView с пользовательским дизайном. Этот UITableView должен поддерживать режим редактирования. При входе в режим редактирования UITableViewCell получает дополнительные элементы управления (EditControl, ReorderControl …). Они не очень хорошо подходят для моего пользовательского дизайна, и поэтому я хотел заменить их изображения. Для этой цели я подклассифицировал UITableViewCell и layoutSubview , где я заменяю изображения для этих элементов управления.

Проблема: при запуске операции перетаскивания изображение для EditControl заменяется обратно на исходное где-то в UITableViewCell. Я могу заменить его снова

 – tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath: 

когда пользователь перемещает перетаскиваемую ячейку в другую indexPath, но это слишком поздно.

Поэтому мой вопрос сводится к следующему: как я могу обнаружить момент, когда пользователь начинает перетаскивать UITableViewCell ?

One Solution collect form web for “Обнаружение события перетаскивания UITableViewCell”

Хотя комментарий Балы пошел в правильном направлении, у меня изначально были некоторые проблемы с правильной реализацией. Теперь я узнал, как это можно сделать. Короче: вам нужно создать собственный подкласс UITableViewCell . Переопределите layoutSubviews чтобы подключить UILongPressGestureRecognizer к UITableViewCellReorderControl . Определите протокол и используйте делегат, чтобы сообщить кому бы вы ни говорили о состоянии перетаскивания.

CustomTableViewCell.h:

 #import <UIKit/UIKit.h> @protocol CustomTableViewCellDelegate; @interface CustomTableViewCell : UITableViewCell { } @property (nonatomic, assign) id <CustomTableViewCellDelegate> delegate; @end @protocol CustomTableViewCellDelegate - (void)CustomTableViewCell:(CustomTableViewCell *)cell isDragging:(BOOL)value; @end 

CustomTableViewCell.m:

 #import "CustomTableViewCell.h" @implementation CustomTableViewCell @synthesize delegate = _delegate; - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { [_delegate CustomTableViewCell:self isDragging:YES]; // Dragging started } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { [_delegate CustomTableViewCell:self isDragging:NO]; // Dragging ended } } - (void)layoutSubviews { [super layoutSubviews]; for (UIView *view in self.subviews) { if ([NSStringFromClass ([view class]) rangeOfString:@"ReorderControl"].location != NSNotFound) { // UITableViewCellReorderControl if (view.gestureRecognizers.count == 0) { UILongPressGestureRecognizer *gesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; gesture.cancelsTouchesInView = NO; gesture.minimumPressDuration = 0.150; [view addGestureRecognizer:gesture]; } } } } @end 

Имейте в виду, что, хотя этот код не использует какие-либо частные API, он все равно может перестать работать, если Apple изменит свою внутреннюю реализацию (например, изменив имя класса UITableViewCellReorderControl ).

  • Сетка изображений в iOS
  • добавить изображение в ячейку uitableview
  • Как переформатировать пользовательский UITableViewCell в режиме редактирования для размещения элементов управления Delete?
  • iOS, где можно разместить дизайн пользовательских ячеек? awakeFromNib или cellForRowAtIndexPath?
  • Как проверить ячейку в UItableview для отображения изображения
  • Обновить определенную строку UITableView на основе Int в Swift
  • Как мы можем динамически добавлять новую ячейку между двумя данными ячейкой в ​​TableView?
  • Запуск другого кода после просмотра таблицы
  • Как обнаружить клетку tableView, затронутую или щелкнув в быстрой
  • Как использовать статические ячейки в UITableView без использования раскадровки?
  • как реализовать UITableViewController с несколькими прототипными ячейками программно в быстром
  • Interesting Posts

    В песочнице App Purchase – Недействительный адрес

    Доступная память для iPhone OS

    – ошибка?

    Создание stringWithContentsOfURL асинхронно – безопасно ли это?

    Расширение клавиатуры: возможно ли наследовать функции и пользовательский интерфейс с клавиатуры iOS на складе?

    Печать объекта NSManagedObject подкласса Core Data для консоли возвращает пустую строку в Swift

    magicalrecord удаление не импортированных данных

    Самый удобный способ воспроизведения звука в iOS-играх?

    iOS добавляет CollectionView к другому представлению в построителе пользовательского интерфейса раскадровки

    Как заставить удалять-удалять работу, когда свойство tableView позволяет использовать свойство MultipleSelectionDuringEditing ДА?

    iOS. Невозможно добавить событие календаря в календарь Gmail с помощью EventKit.

    NSSortDescriptor – сортировать дескриптор на основе другого массива

    Ограничения размера данных для хранения документов iCloud

    Невозможно получить приглашения в игровой центр

    Проблемы с профилями iOS-Provisioning.

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.