我正在捕获shouldStartLoadWithRequest中的url。iPhone - 我怎么知道一个URL是否是一个资源文件?
我怎么知道它是否是我试图打开的项目资源之一(例如[self.webView loadHTMLString:htmlContentFinal baseURL:[NSURL fileURLWithPath:bundlePath]];
)或其他?
我正在捕获shouldStartLoadWithRequest中的url。iPhone - 我怎么知道一个URL是否是一个资源文件?
我怎么知道它是否是我试图打开的项目资源之一(例如[self.webView loadHTMLString:htmlContentFinal baseURL:[NSURL fileURLWithPath:bundlePath]];
)或其他?
您可以检查URL字符串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];
}
检查[URL schema]
。如果它是file
,那么它是一个本地文件。例如,它不一定是捆绑资源,例如可能是应用程序文档中的文件。
要确保它位于包中,请将路径的开头与[NSBundle mainBundle]中提供的包路径匹配。虽然我不明白为什么。
如何确保我是加载该文件的人?用户可以自己在url字段中写入该url。 – Oliver 2011-05-04 15:47:34
用户是否使用UITextField输入网址? – akashivskyy 2011-05-04 15:53:39
好的,我在我的答案中发布了代码。 – akashivskyy 2011-05-04 18:37:15