如何检查WebView是否正在加载特定页面?

时间:2009-11-08 20:32:48

标签: iphone objective-c xcode

我想检查我的WebView是否在本地加载特定的html页面(例如index2.html)。那可能吗?谢谢!

编辑:

我使用过这段代码:

NSString *currentURL
    = webview1.request.URL.absoluteString;

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"indexPRO" ofType:@"html"];

    urlLocation1 = [NSURL fileURLWithPath:filePath];

    if(currentURL = urlLocation1){ //Do something..

但不起作用....是因为我在currentURL中使用“绝对字符串”而在“urlLocation1”中使用相对字符串??

2 个答案:

答案 0 :(得分:3)

查看UIWebView delegate方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

// examine request to see what url is about to load.
// return YES to allow the load, NO to disallow.
// don't forget to set the delegate:
// myWebView.delegate = self;

    return YES;
}

webViewDidFinishLoad或webView:didFailLoadWithError之一将在请求完成时被调用。如上所述,检查UIWebView对象的“loading”属性将指示是否仍然加载了某些内容。

if( myWebView.loading ) ...

编辑:回复您的其他信息,(假设我理解您要做的事情......)尝试以下方法:

// compare scheme property of URL against "file"
if( [[webview1.request.URL scheme] isEqualToString:@"file"] ){
    NSLog(@"load request is local file");
    // ... your code here ...
}

我不知道一旦加载完成后UIWebView“request”属性是否有效,还没有测试过。如果没有,请保留最近加载的URL的私有副本或在其他地方请求。

答案 1 :(得分:1)

您可以检查其“loading”属性以查看是否已完成。您可以检查“request”属性以获取NSURLReqest以查看它正在加载或已加载的内容。