Как изменить UIScrollView с пометкой isPagingEnabled с автопрокруткой - PullRequest
4 голосов
/ 08 января 2020

У меня есть горизонтальная UIScrollView с isPagingEnabled = true, содержащая несколько страниц. Если я перетаскиваю содержимое прокрутки и отпускаю палец, он переходит на следующую страницу, только если я перетащил не менее 50% ширины прокрутки. Я хочу выполнить автоматическую прокрутку на следующую / предыдущую страницу, если расстояние перетаскивания превышает 25%.

Мне удалось добиться этого путем переопределения scrollViewDidEndDragging в UIScrollViewDelegate, вычисления расстояния перетаскивания и вызова scrollView.setContentOffset. Но проблема в том, что если расстояние> 25 и <50, то оно прокручивается назад автоматически, вероятно, потому что scrollview вызывает его реализацию по умолчанию. </p>

Есть идеи, как мне этого добиться? Спасибо

1 Ответ

2 голосов
/ 13 января 2020

Я бы использовал обратный вызов следующего делегата, изменив смещение на нужную страницу

// called on finger up if the user dragged. velocity is in points/millisecond. 
// targetContentOffset may be changed to adjust where the scroll view comes to rest
@available(iOS 5.0, *)
optional func scrollViewWillEndDragging(_ scrollView: UIScrollView, 
    withVelocity velocity: CGPoint, 
    targetContentOffset: UnsafeMutablePointer<CGPoint>)
...