UIScrollView уведомления - PullRequest
       13

UIScrollView уведомления

4 голосов
/ 10 апреля 2010

Я кодирую приложение, которое работает во многом как Apple Weather.app: внизу есть UIPageControl и UIScrollView в середине экрана. В своем коде я реализовал метод - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView, чтобы выяснить, когда пользователь перешел на новую страницу. Если они переходят на новую страницу, я загружаю данные соседних страниц, чтобы ускорить дальнейшее переключение страниц. (В одном из примеров Apple используется - (void)scrollViewDidScroll:(UIScrollView *)sender, но из-за этого мое приложение на короткое время зависает при загрузке новой страницы, поэтому оно не подходит.) Этот код работает очень хорошо.

Я использую scrollRectToVisible:: для программной прокрутки внутри прокрутки, когда пользователь нажимает UIPageControl. Проблема в том, что scrollRectToVisible: не публикует уведомление в UIScrollViewDelegate, когда завершает прокрутку - поэтому код, отвечающий за загрузку соседних страниц, никогда не вызывается при использовании UIPageControl.

Есть ли способ заставить UIScrollView уведомлять своего делегата, когда он вызывается методом scrollRectToVisible:? Или мне придется использовать темы, чтобы предотвратить зависание моего приложения?

Спасибо!

- Ry

Ответы [ 2 ]

4 голосов
/ 10 апреля 2010

Как насчет -scrollViewDidEndScrollingAnimation:?

Если это не работает, попробуйте прослушать уведомление UITextSelectionDidScroll. (Конечно, это без документов.)

В качестве альтернативы безопасным методом SDK является измерение времени, затраченного на анимацию, и отправка отложенного уведомления на сайт вызова -scrollRectToVisible:.

2 голосов
/ 29 ноября 2010

Вместо этого вы можете добавить этот метод делегата:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

Представление прокрутки вызывает этот метод в конце своих реализаций UIScrollView и setContentOffset: animated: и scrollRectToVisible: animated: методы, но только если запрашиваются анимации.

...