Как приостановить / отключить UILongPressGestureRecognizer для UITableViewCell в режиме редактирования - PullRequest
4 голосов
/ 22 марта 2012

В табличном представлении на каждой ячейке есть UILongPressGestureRecognizer, который я добавляю вот так:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] 
                                          initWithTarget:self 
                                          action:@selector(TableCellLongPressed:)];
longPress.minimumPressDuration = 0.5f;
[cell addGestureRecognizer:longPress];
[longPress release];

Теперь у меня есть следующая проблема: я хочу, чтобы пользователь мог переставить ячейку в табличном представлении, поэтому у меня есть кнопка, которая устанавливает для TableView значение EditMode следующим образом:

[self.myTableView setEditing:!self.myTableView.editing animated:YES];

Теперь, когда пользователь пытается перетащить ячейку и не перетаскивает ее достаточно далеко, longPress запускает его действие, которое очень раздражает пользователя, потому что другое представление выдвигается. Как я могу приостановить или отключить UILongPressGestureRecognizer, когда tableView находится в режиме редактирования?

1 Ответ

5 голосов
/ 23 марта 2012

Вы должны реализовать делегат UIGestureRecognizerDelegate для этого метода:

gestureRecognizer: shouldReceiveTouch:

В этом методе проверьте, редактируете ли вы таблицу, и в противном случае верните НЕТ.

Тим

...