gpt4 book ai didi

swift - 定时器完成 block 中的变量未更新

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

这是场景:

我想在页面显示后滚动(或摇动)水平collectionView,以便用户可以看到它滚动...

我在页面弹出后 3 秒内毫无问题地执行此操作,但我不希望它在用户在 2 秒之前到达 collectionView 并自行滚动时进行舞蹈。

这是我的解决方案:

   var collectionDidScroll = false

func scrollViewDidScroll(_ scrollView: UIScrollView) {
collectionDidScroll = true
}

override func awakeFromNib() {
super.awakeFromNib()
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(showScrollTutorial), userInfo: nil, repeats: false)
}

@objc func showScrollTutorial() {
if !collectionDidScroll {
collectionView.shakeCells()
}
}

问题:

“collectionDidScroll”在类中更新得很好,但在计时器完成时它总是错误!这意味着“collectionDidScroll”未完成更新并且它有其启动时间值。

注意:

我的类是 UICollectionViewCell 的子类

我什至尝试了带有计时器的dispatchQueue和带有完成 block 的计时器,但结果是相同的

最佳答案

上面的评论回答了您的问题,但可以帮助您自己解决将来类似的问题:

每当遇到这样的问题时,您应该尝试在代码(尤其是 scrollViewDidScrollshowScrollTutorial)中添加打印语句,以查看它们是否被调用以及哪些被调用。它们包含的值。或者你可以设置断点!

关于swift - 定时器完成 block 中的变量未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58786422/

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