Why does a UIWebView instance not call scrollViewDidScroll?

ios, iphone, uiwebview

Solution

My guess is you set up delegate only for UIWebView. Try setting delegate of scrollView.

webView.scrollView.delegate = self

it should be ok.

Problem

iOS documention says, that the UIWebView class conforms to UIScrollViewDelegate. But an UIWebView instance does not call the `scrollViewDidScroll` method of its controller. The delegate is set just right by ``` [webView setDelegate:self]; ``` and `webViewDidFinishLoad` is called successfully. The controller implements both delegates, UIWebViewDelegate and UIScrollViewDelegate, like this: ``` @interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{ UIWebView *webView; } ``` Browsing SO leads to that category solution: ``` @implementation UIWebView(CustomScroll) - (void) scrollViewDidScroll:(UIScrollView *)scrollView{ [self.delegate scrollViewDidScroll: scrollView]; } @end ``` That category approach does basically the same: Calling the delegate's scrollViewDidScroll method. So why does the the first approach not work?

Original source