gpt4 book ai didi

ios - 在用户交互中快速停止 ScrollView 中的自动滚动

转载 作者:行者123 更新时间:2023-11-29 05:43:46 25 4
gpt4 key购买 nike

我在我的应用程序中使用页面 Controller 。

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

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

请用我的以下代码查找。

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)
}
}

最佳答案

添加 ScrollView 委托(delegate)并在调用时使用 scrollViewDidEndDragging 方法,只需重置计时器,以便在 3 秒后重新启动它按原样工作。

关于ios - 在用户交互中快速停止 ScrollView 中的自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56336144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com