Распознавать жест прокрутки в UIScrollView только тогда, когда прокручиваемый контент достигает края

У меня UIScrollView с активной вертикальной прокруткой. Что я пытаюсь сделать, так это добавить жест смахивания с направлением .down, который будет распознан, когда пользователь больше не сможет прокручивать содержимое, потому что оно достигает края.

Я пытался использовать require(toFail:), но он не работает должным образом.

let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
swipeDown.direction = UISwipeGestureRecognizerDirection.down
swipeDown.require(toFail: self.scrollView.panGestureRecognizer)
self.scrollView.addGestureRecognizer(swipeDown)

Я также добавил метод UIGestureRecognizerDelegate для одновременного распознавания:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
}

Как всегда отдавать приоритет прокручиваемому содержимому внутри scrollView и когда больше невозможно обнаружить пролистывание?


person Bastek    schedule 01.12.2016    source источник


Ответы (1)


Хорошо, способ, которым я решил эту проблему, заключался в том, чтобы просто проверить, достигает ли contentOffset точки 0.0, и если да, то отключите прокрутку и активируйте дополнительный жест. Для моего случая этого было достаточно.

if scrollView.contentOffset.y == 0.0 {
    print("content on top")

    // use delegate method here to manage the gestures

}
person Bastek    schedule 05.12.2016