2011-05-04 53 views

回答

4

您可以检查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]; 

} 
+0

如何确保我是加载该文件的人?用户可以自己在url字段中写入该url。 – Oliver 2011-05-04 15:47:34

+0

用户是否使用UITextField输入网址? – akashivskyy 2011-05-04 15:53:39

+1

好的,我在我的答案中发布了代码。 – akashivskyy 2011-05-04 18:37:15

0

检查[URL schema]。如果它是file,那么它是一个本地文件。例如,它不一定是捆绑资源,例如可能是应用程序文档中的文件。

要确保它位于包中,请将路径的开头与[NSBundle mainBundle]中提供的包路径匹配。虽然我不明白为什么。

+0

我如何可以保证我是谁加载该文件的一个?用户可以自己在url字段中写入该url。 – Oliver 2011-05-04 15:47:52

+0

@Oliver:如果你不想让用户加载任意URL,为什么你有一个URL字段?资源文件夹的内容在设计时就已为您所知;如果这是您希望提供的唯一内容,而不是自由格式的URL字段,请提供有效资源的列表(“UITableView”或其他)。 – 2011-05-04 15:55:28

+0

我想制作一个自由格式的URL,但我想确保用户不会尝试从iPhone输入文件URL。 – Oliver 2011-05-04 17:10:08

相关问题