Если вы хотите, чтобы нижний колонтитул следовал содержимому веб-представления, вы должны использовать UIScrollViewDelegate.
Есть несколько хитростей.
- Получите UIScrollView в UIWebView.Теперь в iOS5 это очень просто.
- Установите делегат UIScrollView своему делегату.
- Ваш делегат должен передать все сообщения из UIScrollViewDelegate в UIWebView.
- Изменитьположение нижнего колонтитула в соответствии с contentOffset в UIScrollView
- Восстановление значения делегата при освобождении UIWebView
Вы можете добавить следующий код для передачи сообщения из UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// layout your footer here
[self layoutAccessoryViews:scrollView];
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidScroll:)] ) {
[scrollViewPassthrough_ scrollViewDidScroll:scrollView];
}
}
// any offset changes
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidZoom:)] ) {
[scrollViewPassthrough_ scrollViewDidZoom:scrollView];
}
}
// called on start of dragging (may require some time and or distance to move)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewWillBeginDragging:)] ) {
[scrollViewPassthrough_ scrollViewWillBeginDragging:scrollView];
}
}
// called on finger up if the user dragged. velocity is in points/second. targetContentOffset may be changed to adjust where the scroll view comes to rest. not called when pagingEnabled is YES
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewWillEndDragging:withVelocity:targetContentOffset:)] ) {
[scrollViewPassthrough_ scrollViewWillEndDragging:scrollView withVelocity:velocity targetContentOffset:targetContentOffset];
}
}
// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidEndDragging:willDecelerate:)] ) {
[scrollViewPassthrough_ scrollViewDidEndDragging:scrollView willDecelerate:decelerate];
}
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewWillBeginDecelerating:)] ) {
[scrollViewPassthrough_ scrollViewWillBeginDecelerating:scrollView];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidEndDecelerating:)] ) {
[scrollViewPassthrough_ scrollViewDidEndDecelerating:scrollView];
}
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidEndScrollingAnimation:)] ) {
[self scrollViewDidEndScrollingAnimation:scrollView];
}
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(viewForZoomingInScrollView:)] ) {
return [scrollViewPassthrough_ viewForZoomingInScrollView:scrollView];
}
return nil;
}
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewWillBeginZooming:withView:)] ) {
[scrollViewPassthrough_ scrollViewWillBeginZooming:scrollView withView:view];
}
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidEndZooming:withView:atScale:)] ) {
[scrollViewPassthrough_ scrollViewDidEndZooming:scrollView withView:view atScale:scale];
}
}
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewShouldScrollToTop:)] ) {
[scrollViewPassthrough_ scrollViewShouldScrollToTop:scrollView];
}
return YES;
}
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
[self layoutAccessoryViews:scrollView];
if( [scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidScrollToTop:)] ) {
[scrollViewPassthrough_ respondsToSelector:@selector(scrollViewDidScrollToTop:)];
}
}