PullToRefreshView It is: - a pull-to-refresh implementation - very easy to implement - doesn't suck To implement it: - add the three files (PullToRefreshView.{h,m} and arrow.png) to your project - #import "PullToRefreshView.h" - add an ivar: PullToRefreshView *pull; // or whatever you want to name it - in loadView or viewDidLoad, add this (and be sure to release in dealloc/viewDidUnload, etc): pull = [[PullToRefreshView alloc] initWithScrollView:<your scroll view here>]; [pull setDelegate:self]; [<your scroll view here> addSubview:pull]; - implement two delegate methods: // called when the user pulls-to-refresh - (void)pullToRefreshViewShouldRefresh:(PullToRefreshView *)view; // called when the date shown needs to be updated, optional - (NSDate *)pullToRefreshViewLastUpdated:(PullToRefreshView *)view; - call -finishedLoading on the PullToRefreshView when you finished loading (or got an error, etc) - that's it! no need to forward on UIScrollView delegate methods or anything silly like that. Fork by iStopped :) In order to use this class with a UIWebView - add the three files (PullToRefreshView.{h,m} and arrow.png) to your project - #import "PullToRefreshView.h" - in loadView or viewDidLoad add this: UIWebView *webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)] autorelease]; webView.delegate = self; webView.tag = 999; NSURLRequest *request; //fill request [webView loadRequest:request]; [webView setScalesPageToFit:YES]; UIScrollView* currentScrollView; for (UIView* subView in webView.subviews) { if ([subView isKindOfClass:[UIScrollView class]]) { currentScrollView = (UIScrollView *)subView; currentScrollView.delegate = self; } } PullToRefreshView *pull = [[[PullToRefreshView alloc] initWithScrollView:currentScrollView] autorelease]; [pull setDelegate:self]; pull.tag = 998; [currentScrollView addSubview:pull]; [self.view addSubview:webView]; - Add the delegate -(void)pullToRefreshViewShouldRefresh:(PullToRefreshView *)view;: -(void)pullToRefreshViewShouldRefresh:(PullToRefreshView *)view { [(UIWebView *)[self.view viewWithTag:999] reload]; } - Add the delegate -(void)webViewDidFinishLoad:(UIWebView *)webView;: -(void)webViewDidFinishLoad:(UIWebView *)webView { [(PullToRefreshView *)[self.view viewWithTag:998] finishedLoading]; } - Have Fun ;)