The UIWebView delegate approach does not work, you're right ! new answer:
Right, you need to go one level deeper to catch the NSURLRequest
coming from the UIWebView
. The blog you're referring to makes use of the NSURLCache
and I think this is a good start point:
Did you try to subclass the NSURLCache, and then override the -(NSURLCacheResponse*) cachedResponseForRequest:(NSURLRequest*) request
If you want to avoid the request being performed, you need to return something (as an NSURLCachedResponse
). You can for instance, get an image that is statically defined in your app (maybe an PNG with size 0,0 ).
If you return nil
, the request will be performed.
I'm using this approach to force the UIWebView
to get populated with a local cache. See my detailled answer about this here :
http://stackoverflow.com/questions/1343515/how-to-save-the-content-in-uiwebview-for-faster-loading-on-next-launch/2468722#2468722
Wrong first answer :/
Add yourself as delegate to the UIWebView
(UIWebViewDelegate
).
For each image that the UIWebView
attempts to load, the delagate gets the following callback invoked :
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Just check if the request is related to an image you want to avoid to download. In such a case, just return NO
to this callback : the image won't be loaded in the UIWebView
.
By using this approach, no change is required on server side.