Вот сценарий:
Я хочу прокрутить (или встряхнуть) горизонтальную коллекцию ViewView после отображения страницы, чтобы пользователь мог видеть ее прокрутку ...
Я делаю это без проблем через 3 секунды после всплывающего окна, но я не хочу, чтобы он исполнял танец, когда пользователь достигает элемента collectionView до 2 секунд и сам прокручивает его.
Так вот мойрешение для этого:
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 с таймером и таймером с блоком завершения, но результаты те же