Просмотр таблицы не прокручивается, когда я использую распознаватель жестов
У моего приложения есть табличное представление (с прокруткой, конечно), и это представление можно включать и выключать с помощью распознавателя жестов (например, в приложении Facebook).
Если я использую кнопку для слайда [вид таблицы на экране], она отлично работает, но когда я использую распознаватель жестов, представление таблицы больше нельзя прокручивать.
Вот код распознавателя жестов с проблемой:
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
У кого-то есть идея?
Ответы
Ответ 1
Ваш жест, вероятно, предотвращает работу жестов просмотра прокрутки, потому что по умолчанию только один жест может быть распознан одновременно. Попробуйте добавить себя в качестве делегата вашего жеста и реализовать:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
self.slidingViewController.panGesture.delegate = self;
добавьте <UIGestureRecognizerDelegate>
в список протоколов, которые вы реализуете
Ответ 2
Вот быстрая версия:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
Ответ 3
Я использовал UIPangesture в своем UItableview и, чтобы избежать этого жеста, который я использовал ниже делегата,
//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
let translation = panGestureRecognizer.translationInView(superview)
if fabs(translation.x) > fabs(translation.y) {
return true
}
return false
}
return false
}
Ответ 4
У меня была одна и та же проблема определения длинного жестов нажатия на табличном представлении и невозможности прокрутки таблицы, когда я долго нажимаю на нее.
Исправлено:
1- добавление UIGestureRecognizerDelegate
2- добавление gesture.delegate = self (after you defined the long press gesture)
3- добавление этой функции:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}
Ответ 5
Если я правильно понимаю, что вы добавляете распознаватель жестов, это вид таблицы. По умолчанию класс UIScrollView
(и неявно UITableView
) использует распознаватель жестов для прокрутки, и ваш распознаватель жестов вмешивается в это. Если вы используете другое представление в качестве контейнера для представления таблицы, и вы добавляете распознаватель жестов, он должен работать.