shouldStartLoadWithRequest:不调用图像



我有一个UIWebView,我让它加载一个HTML字符串。该字符串包含图像的 http 网址。图像已加载,但不会为它们调用shouldStartLoadWithRequest:方法。它只叫一次,about : blank.但是,所有图像请求都已成功传递到我的NSURLCache子类中,传递到cachedResponseForRequest:方法中。但我想以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

shouldStartLoadWithRequest方法仅在页面加载时调用(即,当页面作为一个整体加载或加载框架的内容时),而不是在加载单个资源(如图像、JavaScript 或 CSS 时)。

如果你想操纵来自UIWebView的所有HTTP/HTTPS请求,我知道的唯一方法是使用自定义NSURLProtocol子类。 有关如何执行此操作的示例,请参阅 Apple 的自定义 HTTP 协议示例代码项目。

相关内容

  • 没有找到相关文章

最新更新