Я думаю, что у вас такая же проблема с этим вопросом . Посмотрите на это, если хотите увидеть пример кода.
Чтобы решить проблему, вы должны добавить жест с самого начала, но обрабатывать действие жеста следует только тогда, когда пользователь прокручивает страницу до конца. Поэтому вам не нужно снова прикасаться к экрану, потому что жест начинается, когда вы начинаете прокручивать. Метод обработки жестов будет выглядеть ниже
@objc func handlePanGestureRecognizer(_ gestureRecognizer: UIPanGestureRecognizer) {
switch gestureRecognizer.state {
case .began:
// Do nothing
break
case .changed:
let translation = gestureRecognizer.translation(in: gestureRecognizer.view!.superview!)
let velocity = gestureRecognizer.velocity(in: gestureRecognizer.view!.superview)
let state = gestureRecognizer.state
// Don't do anything until |scrollView| reached bottom
if scrollView.contentOffset.y >= -80.0 {
return;
}
// Do whatever you want with |scrollView|
}
break;
case .cancelled:
case .ended:
case .failed:
default:
break;
}
}
Также реализуйте gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
, чтобы жесты и просмотр с прокруткой работали вместе
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}