Обнаружение события перетаскивания 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 ).

  • Цель - C: изменение содержимого UITableView на свитке
  • Как реализовать UITableViewCell без UITableView
  • UITableViewCell - Лучшее место для настройки ячейки
  • Два uilabels на uitable с динамической высотой
  • Сделайте UITableView «липким на дно»
  • Сепаратор последней строки UITableView исчезает / появляется снова
  • Добавьте UIView поверх UITableViewController в Swift
  • Использование динамического пользовательского UITableViewCell в XCode 4.2, с раскадными страницами и UISeachDisplayController
  • UITableView прокручивается в UIVIewController
  • iOS UI - Магазин приложений Изучение раздела Переход
  • загружать изображения из Интернета в UIImageView внутри UITableView
  • Swift Изображения изменяются на неправильные изображения при прокрутке после загрузки асинхронного изображения в UITableViewCell
  • Interesting Posts

    UIImagePickerControllerMediaMetadata хранит разные данные по сравнению со встроенной камерой iOS

    Почему UIPopoverPresentationController изменяет размер содержимого?

    Где мы должны хранить данные для загрузки в приложении iPhone?

    Достижимость iOS – проблемы с медленными и отсутствующими уведомлениями

    textView.typingAttributes не работает для прогнозирования

    Поиск материала многомерного массива

    Добавление тестовой цели к существующему проекту не работает

    Как я могу получить Xcode 5 для запуска модульных тестов iOS на подчиненном устройстве Jenkins?

    RestKit RKObjectMapping вложенный json

    iPhone – NSLog не печатает, когда приложение находится в фоновом режиме

    Как вы используете ссылки на приложения с кнопкой общего доступа к facebook в ios для глубокой ссылки?

    Основные данные: требуется ли сделать выборку в постоянном хранилище?

    Как выполнить отмену операции в iOS для хранения UIGraphicsContext?

    Почему – игнорируется?

    Почему я получаю потерю пакетов при использовании GKMatchSendDataReliable?

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