I know that this is possible in the Tweetie for iPhone or the xkcd iPhone app, but they are using a table. Any idea if this can be done for a simple UIWebView
a
To retrieve scroll events on UIWebView I personnaly use this code to get the scrollview that is inside the UIWebView :
- (void) addScrollViewListener
{
UIScrollView* currentScrollView;
for (UIView* subView in self.myWebView.subviews) {
if ([subView isKindOfClass:[UIScrollView class]]) {
currentScrollView = (UIScrollView*)subView;
currentScrollView.delegate = self;
}
}
}
It's working. You can also use it to call [(UIScrollView*)subView setContentOffset:offSet animated:YES];
The only problem may be not to pass Apple code checking. I don't know yet since I'm still in coding phase.
Anyone tried that yet ?
To get a reference for the UIScrollView in UIWebView, simply search it by iterating trough subviews.
for(id eachSubview in [webView subviews]){
if ([eachSubview isKindOfClass:[UIScrollView class]]){
scrollView = eachSubview;
break;
}
}
After that you can easily wire up things to your EGORefreshTableHeaderView interface with the UIWebView and the UIScrollView delegate callbacks.
To tell the truth, UIWebVIew class has an undocumented getter method called _scrollView; So the code goes:
scrollView = [webView _scrollView];
FYI, iOS 5 has officially introduced the property scrollView in UIWebView. I tested it. It worked perfectly with EGO's pull and refresh code. So the problem is no longer a problem for any iOS 5 devices.
For downward compatibility, you still need @CedricSoubrie's code though.