[ad_1]
I’ve a UIPageViewController named OnboardingViewController with three viewcontrollers in there. I even have a pageControl which has a faucet gesture set on it. My Pageviewcontroller’s transitionStyle is
scroll and I don’t wish to change it to pageCurl. I’ve turned off carousel habits of the setup by beneath code the place pages is the array of viewcontrollers.
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let currentIndex = pages.firstIndex(of: viewController) else { return nil }
if currentIndex == 0 {
return nil
} else {
return pages[currentIndex - 1]
}
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let currentIndex = pages.firstIndex(of: viewController) else { return nil }
if currentIndex < pages.depend - 1 {
return pages[currentIndex + 1]
} else {
pageControl.currentPage = pages.depend - 1
return nil
}
}
However After that although I’m able to cease the round rotation of all screens I’m seeing some bounce when I attempt to swipe left on my first viewcontroller and proper on my final viewcontroller. I attempted to forestall it by beneath means:
for view in self.view.subviews {
if let scrollView = view as? UIScrollView {
scrollView.delegate = self
break
}
}
extension OnboardingViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if pageControl.currentPage == 0 && scrollView.contentOffset.x < scrollView.bounds.measurement.width {
scrollView.contentOffset = CGPoint(x: scrollView.bounds.measurement.width, y: 0)
} else if pageControl.currentPage == pages.depend - 1 && scrollView.contentOffset.x > scrollView.bounds.measurement.width {
scrollView.contentOffset = CGPoint(x: scrollView.bounds.measurement.width, y: 0)
}
}
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if pageControl.currentPage == 0 && scrollView.contentOffset.x < scrollView.bounds.measurement.width {
scrollView.contentOffset = CGPoint(x: scrollView.bounds.measurement.width, y: 0)
} else if pageControl.currentPage == pages.depend - 1 && scrollView.contentOffset.x > scrollView.bounds.measurement.width {
scrollView.contentOffset = CGPoint(x: scrollView.bounds.measurement.width, y: 0)
}
}
}
However it isn’t working and when I’m tapping the final dot on pageControl it is not scrolling to the final web page. What can I do right here?
[ad_2]
