gpt4 book ai didi

ios - 当 ScrollView 的幻灯片被触摸时暂停计时器?

转载 作者:行者123 更新时间:2023-11-30 11:12:10 26 4
gpt4 key购买 nike

我正在尝试在 ScrollView 中自动滚动幻灯片。实际上,我正在为我的入门屏幕执行此操作。不过,我希望计时器在用户触摸幻灯片时暂停一段时间,并在用户移开手指时再次启动。

我正在做类似的事情,但这不适用于我所要求的情况:

in viewDidLoad -
timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(autoScroll), userInfo: nil, repeats: true)


@objc func autoScroll() {
let totalPossibleOffset = CGFloat(topImages.count - 1) * self.view.bounds.size.width
if offSet == totalPossibleOffset {
//offSet = 0 // come back to the first image after the last image
//timer.invalidate()
}
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)
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let page = scrollView.contentOffset.x / scrollView.frame.size.width
pageControl.currentPage = Int(page)
self.offSet = page * scrollView.frame.size.width // this updates offset value so that automatic scroll begins from the image you arrived at manually
}

我还有第二个问题:当用户手动滑动到其他位置时,如何再次启动计时器间隔。现在,当用户在 4 秒之前滑到另一张幻灯片时(因为滑到另一张幻灯片需要 4 秒),比如说 2 秒,他将在 4-2 = 2 秒后滑到下一页,而不是 4 秒,如下所示预计。

最佳答案

我认为你应该添加一些标志,例如

var isSlideTouched = false

在手势识别器中添加

isSlideTouched = true

以及 autoScroll() 中的一些代码

@objc func autoScroll() {
if isSlideTouched {
isSlideTouched = false
return
}

关于ios - 当 ScrollView 的幻灯片被触摸时暂停计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070135/

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