Вызов метода в scrollViewDidScroll с низкой частотой

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

Вы увидите, что он будет печатать только один раз в секунду. Я просто помню, когда в последний раз запускал событие, которое хотел запустить, и переходил оттуда.

Приветствую,
Доминик