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?
This is not correct. If you will use:
You will lose focus when try to enter data on page on iOS7 and more
You need to implement custom class for UIWevView and overwrite scrollViewDidScroll:
My guess is you set up delegate only for UIWebView. Try setting delegate of scrollView.
it should be ok.