首页 > 解决方案 > 快速停止用户交互时滚动视图中的自动滚动

问题描述

我在我的应用程序中使用页面控制器。

它工作正常,每 3 秒自动滚动一次,并且当前位置也根据用户自定义滑动而改变。

但是当用户在我想停止自动滚动时手动滑动滚动视图时,我遇到了一个问题。

请使用我的以下代码查找。

var slides:[Slide] = [];
var offSet: CGFloat = 0
override func viewDidLoad() {
    super.viewDidLoad()

    slides = createSlides()
    setupSlideScrollView(slides: slides)

    pageControl.numberOfPages = slides.count
    pageControl.currentPage = 0
    view.bringSubview(toFront: pageControl)

    let timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(autoScroll), userInfo: nil, repeats: true)

}

@objc func autoScroll() {
    let totalPossibleOffset = CGFloat(slides.count - 1) * self.view.bounds.size.width
    if offSet == totalPossibleOffset {
        offSet = 0 // come back to the first image after the last image
    }
    else {
        offSet += self.view.bounds.size.width
    }
    DispatchQueue.main.async() {
        UIView.animate(withDuration: 0.3, delay: 0, options: UIViewAnimationOptions.curveLinear, animations: {
            self.scrollView.contentOffset.x = CGFloat(self.offSet)
        }, completion: nil)
    }
}

标签: iosswiftuiscrollviewuipagecontrol

解决方案


添加滚动视图委托并scrollViewDidEndDragging在它调用时使用方法只是重置您的计时器,以便在 3 秒后重新启动它按原样工作。


推荐阅读