Как можно получить contentOffset или аналогичную информацию об UIScrollView, пока пользователь все еще прокручивает? Например, если бы я хотел поместить изображение в качестве заголовка прямо над содержимым UIWebView, чтобы изображение не было частью scrollView WebView, но чтобы оно обновлялось во время прокрутки пользователя, а не просто перескакивало на позицию после того, как они отпустили. Как я мог это сделать?
Как получить contentOffset середины прокрутки UIScrollView?
Ответы:
В iOS 5 UIWebView
имеет свойство scrollView
, которое является UIScrollView
ответственным за обработку прокрутки. До iOS 5 вы можете искать свойство subviews UIWebView
для subview, используя [subview isKindOfClass:[UIScrollView class]]
.
Когда у вас есть UIScrollView
, вы можете установить его свойство делегата. Затем в делегате вы можете ответить на сообщение scrollViewDidScroll:
, когда пользователь прокручивает, и обновить позицию/содержимое вашего представления заголовка.
Добавлено: 29/02/2012 - Чтобы сохранить функциональность UIWebView
, вам нужно будет также перенаправить перехваченные методы UIScrollViewDelegate
в UIWebView
. Для этого вы можете вызвать UIWebView в конце всех обязательных методов протокола и реализовать что-то вроде forwardInvocation:
или forwardingTargetForSelector
для необязательных методов протокола. Это сохранит ваше исходное UIWebView
поведение и позволит вам улучшить его с помощью собственной логики.
Почему вы не можете просто поместить заголовок как отдельный вид над UIWebView
? Почему это должно быть подвидом?
UIWebView
. Если вы назначаете себя делегатомUIWebView
отUIScrollView
, то вы топчетесь наUIWebView
. Это невозможно сделать. 27.02.2012