Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Как определить, отключить либо переписать gesture recognizer отвечающий за перемещение ячеек в TableView

Anna | 2.07.2014 | нет комментариев
Второй день пытаюсь решить следующие задачи:
1. Выключение gesture recognizer отвечающего за перемещение ячеек в TableView
2. Внесение метаморфозы в gesture recognizer отвечающего за перемещение ячеек в TableViewМое приложение содержит три кэстом-класса:
-NDAViewController
-NDATableView(my custom table view)
-NDACell(my custom cell for table view)

Я перевожу NDATableView экземпляр в режим редактирования (таблица непрерывно работает в этом режиме):
- (void)viewDidLoad{ [super viewDidLoad]; [myTableView setEditing:YES animated:YES];}

Я хочу переписать способ тот, что срабатывает когда перетаскиваю ячейку(свайп по ReorderControl). Для начала я попытался определить какой именно gesture recognizer и в каком UIView отвечает за данную операцию. Для этого применял способ:
-(void) helper:(UIView*) view{ for (UIView* sub in view.subviews) { NSLog(@"%@.subview=%@",NSStringFromClass ([view class]),NSStringFromClass ([sub class])); for(UIGestureRecognizer* gestRec in sub.gestureRecognizers) { NSLog(@"view=%@ gesture recognizer=%@",NSStringFromClass ([sub class]),NSStringFromClass ([gestRec class])); } [self helper]; } }

Вследствие ему я узнал иерархию UIView и определил какие UIGestureRecognizer есть у всякого из них:
1. TableView (имеет 4 распознавателя жестов)
2. Cells (subviews of TableView, имеет 0 gesture recognizer)
3. UITableViewCellContentView (subview of Cell, имеет 1 gesture recognizer)
4. UITableViewCellEditControl (subview of Cell, имеет 0 gesture recognizer)
5. UITableViewCellReorderControl (subview of Cell, имеет 0 gesture recognizer)
6. UIView x2 (subview of Cell, имеет 0 gesture recognizer)

Я был поражен что UITableViewCellReorderControl не имеет gesture recognizers. Я предположил что за перемещение ячеек отвечает один из четырех gesture recognizers TableView. Дабы удостовериться в этом я попытался заблоктровать их применяя в ViewController дальнейший способ:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { return NO;};
также назначил делегатом 3 gesture recognizers(UIGobberGestureRecognizer,
UISwipeGestureRecognizer, UIScrollViewDelayedTouchesBeganGestureRecognize) of TableView — ViewController. Для UIScrollViewPenGestureRecognizer невозможно в качестве делегата применять ViewController. Впрочем позже этого перемещение ячеек продолжало трудиться. Я испробовал назначить тот же делегат и для UILongPressGestureRecognizer of UITableViewCellContentView, но и это не принесло триумфа.
Помогите разобраться какой из View и его gesture recognizer отвечают за перемещение ячеек и как переписать их способы.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB