【发布时间】:2012-10-02 20:48:52
【问题描述】:
在UIWebView:shouldStartLoadWithRequest: 内,我想知道正在加载的页面是本地文件还是远程文件。有没有一种简单的方法可以找出来?
我想每次加载文件时我都可以搜索文件系统来查找文件,但是还有其他方法吗?
【问题讨论】:
标签: objective-c ios cocoa-touch uiwebview
在UIWebView:shouldStartLoadWithRequest: 内,我想知道正在加载的页面是本地文件还是远程文件。有没有一种简单的方法可以找出来?
我想每次加载文件时我都可以搜索文件系统来查找文件,但是还有其他方法吗?
【问题讨论】:
标签: objective-c ios cocoa-touch uiwebview
您应该能够通过 URL 的类型来判断请求的类型。
应该像file:… 与http:… 或https:… 一样简单。
【讨论】:
是的,这是可能的。您应该使用正则表达式来测试主机名。本地页面与正则表达式不匹配。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
static NSString *regexp = @"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9])[.])+([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexp];
if ([predicate evaluateWithObject:request.URL.host]) {
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
} else {
return YES;
}
}
【讨论】: