Я пытаюсь добавить UIPanGestureController в свой UITableView, чтобы я мог определить, будет ли пользователь вручную панорамироваться, или просто дал начальный удар и посмотрит прокрутку обзора сам по себе. Причина в том, что я хочу привязать к ячейке, как только прокрутка замедляется (представьте себе колесо удачи). Конечно, я не хочу привязываться, когда пользователь панорамирует вручную.UIGestureRecognizer с установкой setDelegate и действием
Однако я могу либо использовать контроллер жестов (и соответственно настроить переменные «прокрутки вручную»), либо прокручивать представление. Использование событий TouchBegin вместо распознавателя жестов вводит новые проблемы, так что это не вариант .
Сначала я изменил вид таблицы, включив в него UIGestureRecognizerDelegate.
После инициализации вида, то я ...
panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTableView:)];
[panGestureRecognizer setDelegate:self];
[self.view addGestureRecognizer:panGestureRecognizer];
я реализую Бегин функция, чтобы установить BOOL:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
isPanning = YES;
return NO;
}
Всегда возвращаясь NO должен убедиться, что этот жест распознаватель никогда не активен, так как я хочу (и необходимость) использовать собственные методы прокрутки табличного представления.
Проблема: мое действие «panTableView» никогда не называется. Если я не установить делегат, действие вызывается, но я не могу прокручивать, так как распознаватель жестов ловит все мои касания.
Я уже изучал цели. После установки делегата, указатели распознавателя жестов и указатели делегатов совпадают с self.view, действие по-прежнему нацелено на себя с помощью правого селектора.
Работает отлично. Спасибо огромное! –
Нет проблем! Мне нравится помогать. –