#swift
#swift
Вопрос:
У меня есть метод, который управляет ограничениями, пока выполняются некоторые условия. Этот метод помещен внутри scrollViewDidScroll
methood:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
partiallyHideOverallViewOnScrolling(scrollView)
scrollToNewRowsIfNeeded()
}
Недавно я обнаружил зависания и странное поведение при прокрутке таблицы, есть ли возможность вызывать метод внутри scrollViewDidScroll
не чаще, чем, например, каждые 0,1 секунды?
Похоже, что этот метод вызывался 111 раз при одном перетаскивании вниз, когда в tableView
не так много элементов, это довольно много
Комментарии:
1. Считаете ли вы, что нужно использовать
scrollViewWillBeginDragging
иscrollViewWillEndDragging
знать, когда начинается и заканчивается перетаскивание. Потому что каждый раз, когда границы прокрутки меняются,scrollViewDidScroll
вызывается, и в этом не было бы необходимости.2. @DoganAltinbas Я знаю о таких методах, но мне нужно плавно перемещать ограничения во время прокрутки
Ответ №1:
несмотря на то, что комментарий Догана Алтынбаса, предлагающий использовать scrollViewWillBeginDragging
и scrollViewWillEndDragging
, звучит для меня как правильный подход, я хотел бы ответить на ваш вопрос.
Просто краткий пример, который я создал на игровой площадке:
import UIKit
var date = Date()
while (true) {
if Date().timeIntervalSince(date) > 1 {
print("foo")
date = Date()
}
}
Вы увидите, что он будет печатать только один раз в секунду. Я просто помню, когда в последний раз запускал событие, которое хотел запустить, и переходил оттуда.
Приветствую,
Доминик