2016-09-29 3 views
0

Я использую таймер и печатаю contentOffset.y из UIScrollView для отслеживания его все время.Трек UIScrollView contentOffset все время

Но проблемы UIScrollView обновляет его значение contentOffset только после его замедления.

Я хочу знать значение contentOffset.y в каждые миллисекунды таймера и как я могу это сделать? Если я вообще не могу использовать contentOffset из UIScrollView, есть ли другой способ отслеживать аналогичное значение для contentOffset.y scrollView?

Я использую быстро. Спасибо.

+0

Не могли бы вы опубликовать код того, что вы пробовали до сих пор? –

+0

'пусть таймер = Timer.scheduledTimer (TimeInterval: 0.01, цель: самостоятельно, селектор: #selector (self.timTick), UserInfo: ноль, повторяет: истинный) // объявить о времени Func timTick() { пусть scrOffset = scrollView.contentOffset.y print (scrOffset) } // печатать каждые 0.01 секунды '@PoojaSrivastava –

ответ

2

Вместо отслеживания изменений путем опроса с помощью таймера вы можете наблюдать за любыми изменениями в значении. UIScrollView имеет свойство delegate, которое вызывается для событий прокрутки (см. UIScrollViewDelegate), а contentOffset соответствует требованиям KVO.

Или вы могли бы подкласс UIScrollView и попытаться перекрывая сеттеры (либо для contentOffset или bounds где origin это смещение, я не уверен, какой из них, если один класс вызовов внутри - с помощью delegate является предпочтительным решением).

+0

Благодарим вас за ответ. Но методы-делегаты UIScrollView - это только методы 'WillBegin..' и' DidEnd ... ', которые вызывают только тогда, когда я заканчиваю или начинаю ** перетаскивание, прокрутку или сам scrollView ** завершение или начало ** замедления. Мне нужно знать значение ** каждый раз **, касается ли мой палец телефона или нет (или) прокрутка. Вид закончил замедление или нет. Я не знаю, как переопределить настройки, которые вы упомянули. @Arkku –

+0

@thuraoo 'scrollViewDidScroll:' вызывается во время прокрутки всякий раз, когда изменяется смещение, а не только начало/конец. (Просто попробуйте.) Внутри этого метода вы можете проверить свойства 'isDragging',' isTracking' и/isDecelerating' прокрутки. Вы также можете переопределить 'willBegin' и' didEnd' для перетаскивания и/или замедления, если вам нужна специальная обработка на этих событиях. – Arkku

+0

@thuraoo Что касается того, как переопределить сеттеры, так как вы переопределяете любой метод (не забудьте вызвать реализацию 'super'). Но очень маловероятно, что это необходимо, я сделал много вещей, которые требуют точного отслеживания движений вида прокрутки, и 'scrollViewDidScroll:' делегата почти всегда достаточно. – Arkku