滑动过快或连续左右滑动非常快时如何跟踪pageViewController的索引
Posted
技术标签:
【中文标题】滑动过快或连续左右滑动非常快时如何跟踪pageViewController的索引【英文标题】:How to tracking index of pageViewController when swipe too fast or swipe to left and right continuously very fast 【发布时间】:2019-06-29 13:43:53 【问题描述】:我的视图控制器中有一个页面视图控制器,它是无限循环滚动页面视图控制器。
通常,我可以使用 pageViewController 中每个视图控制器的属性 indexController
跟踪当前视图控制器(我的代码中的 ContentViewController)的索引。
class ContentViewController: UIViewController
var indexController = 0
override func viewDidLoad()
super.viewDidLoad()
我通过具有 2 个属性 nextIndex
和 currentIndex
的 2 个函数跟踪索引
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController])
if let vc = pendingViewControllers[0] as? ContentViewController
nextIndex = vc.indexController
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
let prevIndex = currentIndex
if completed
currentIndex = nextIndex
else
nextIndex = currentIndex
但是当我快速向左滚动或快速连续左右滑动时,上面的 2 个函数不能正确调用,currentIndex 也不能正确更新。
我能做什么?我可以防止滑动太快吗?请有人帮我解决这个问题!
【问题讨论】:
尝试为您的控制器启用分页。 【参考方案1】:尝试将 pageviewcontroller 的 uiscrollview 的委托设置为您的视图控制器。
for view in pageViewController!.view.subviews
if let scrollView = view as? UIScrollView
scrollView.delegate = self
然后在这个func中获取pageViewController的当前视图控制器
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
然后正确更新您的索引
【讨论】:
以上是关于滑动过快或连续左右滑动非常快时如何跟踪pageViewController的索引的主要内容,如果未能解决你的问题,请参考以下文章