2017-06-21 7 views
0

私はUIWebViewを持っていて、それにHTML文字列を読み込ませます。文字列には画像へのhttpのURLが含まれています。イメージはロードされますが、shouldStartLoadWithRequest:メソッドは呼び出されません。それはabout : blankのためにちょうど呼ばれます。しかし、すべての画像リクエストは、私のNSURLCacheサブクラスに、cachedResponseForRequest:メソッドに正常に渡されます。しかし、私はshouldStartLoadWithRequest:メソッドの要求を処理したいと思います。それについて何かできますか?これらのリクエストをデリゲートメソッドにするにはどうすればよいですか? shouldStartLoadWithRequest方法は、ロードしていない個々の(全体のページがロードされるとき、またはフレームの内容がロードされるときには、ある)のみページのロードのために呼ばれshouldStartLoadWithRequest:画像が呼び出されていない

@interface URLCache : NSURLCache 

@end 

@implementation URLCache 

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request 
{ 
    NSLog(@"REQUEST = %@", request.URL); 

    return [super cachedResponseForRequest:request]; 
} 

@end 

@interface ViewController()<UIWebViewDelegate> 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [NSURLCache setSharedURLCache:[URLCache new]]; 

    NSString* path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]; 
    NSString* html = [NSString stringWithContentsOfFile:path 
              encoding:NSUTF8StringEncoding 
               error:nil]; 

    self.webView.delegate = self; 

    [self.webView loadHTMLString:html baseURL:nil]; 
} 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"URL = %@", request.URL); 

    return YES; 
} 

@end 

答えて

0

:ここ

コードです画像、JavaScript、CSSなどのリソース

UIWebViewからのすべてのHTTP/HTTPS要求を処理する場合は、カスタムNSURLProtocolサブクラスを使用することです。これを行う方法の例については、AppleのCustom HTTP Protocolサンプルコードプロジェクトを参照してください。

関連する問題