我正在关注shouldStartLoadWithRequest中的网址。
我怎么知道它是我试图打开的项目资源之一(例如使用[self.webView loadHTMLString:htmlContentFinal baseURL:[NSURL fileURLWithPath:bundlePath]];
)还是别的什么?
答案 0 :(得分:4)
您可以检查网址字符串是否以file://
开头:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (request.URL.isFileURL) {
// do some stuff
}
}
我如何确保我是加载该文件的人?用户可以自己在url字段中写入该URL。
您可以实施-textFieldDidBeginEditing
或-textFieldDidEndEditing
并将一些布尔属性设置为YES
:
- (void)textFieldDidEndEditing:(UITextField *)textField {
if ([[textField.text substringToIndex:7] isEqualToString:@"file://"]) {
self.fileUrlEnteredManually = YES;
} else {
self.fileUrlEnteredManually = NO;
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (request.URL.isFileURL) {
if (self.fileUrlEnteredManually) {
// user entered "file://" manually
} else {
// user didn't
}
}
}
- (void)viewDidload {
// ...
fileUrlEnteredManually = NO;
[webView loadRequest:yourLocalRequest];
}
答案 1 :(得分:0)
检查[URL schema]
。如果是file
,则它是本地文件。但它不一定是捆绑资源 - 例如,可能是应用程序文档中的文件。
要确保它在捆绑包中,请将路径的开头与捆绑包的路径匹配,可从[NSBundle mainBundle]获得。虽然我不明白为什么。