Post

Replies

Boosts

Views

Activity

Reply to Weird UIPageViewController + drag bug
This might work. class BuglessPageViewController: UIPageViewController { private var preventScrollBug = true override func viewDidLoad() { super.viewDidLoad() scrollView.delegate = self } override func setViewControllers(_ viewControllers: [UIViewController]?, direction: UIPageViewController.NavigationDirection, animated: Bool, completion: ((Bool) - Void)? = nil) { preventScrollBug = false super.setViewControllers(viewControllers, direction: direction, animated: animated) { completed in self.preventScrollBug = true if completion != nil { completion!(completed) } } } } extension BuglessPageViewController: UIScrollViewDelegate { func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { preventScrollBug = false } func scrollViewDidScroll(_ scrollView: UIScrollView) { if preventScrollBug { scrollView.setContentOffset(CGPoint(x: view.frame.width, y: 0), animated: false) } } func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { if !decelerate { preventScrollBug = true } } func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { preventScrollBug = true } } extension UIPageViewController { var scrollView: UIScrollView! { for view in view.subviews { if let scrollView = view as? UIScrollView { return scrollView } } return nil } }
Topic: UI Frameworks SubTopic: UIKit Tags:
Apr ’21