在我的iPhone应用程序中,我正在webview中显示一个网页。 我按如下方式实现了委托方法:
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error loading the requested URL" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
当我打开一个URL并加载半页时,我立即点击网页中的其他链接。那时,也正在调用这个委托方法。 当网页加载一半并点击URL链接时,我应该如何阻止调用委托方法。
或者其他一些解决方案可以在单击某个URL时调用stopLoading。我怎么能这样做?
答案 0 :(得分:4)
错误代码 NSURLErrorCancelled 会通知您URLLoadingSystem'已停止加载'。例如,当用户单击仅加载了一半的页面中的链接时,就会发生这种情况...... URLLoadingSystem会停止它,因此您不需要这样做。
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
// If the URLLoadingSystem cancelled the load don't show anything.
if ( [error code] == NSURLErrorCancelled )
{
//...this is called when the load is cancelled...
}
else
{
//...handle the error and show the alert ...
}
}
答案 1 :(得分:2)
当网页加载一半并点击URL链接时,我应该如何阻止调用委托方法。
您无法真正停止调用该方法 - 但您可以检查error
对象的属性以确定您遇到的错误类型。
或者其他一些解决方案可以在单击某个URL时调用stopLoading。我怎么能这样做?
您可以使用webView:shouldStartLoadWithRequest:navigationType:
,只要用户采取某种导航操作(例如点击链接,提交表单等),就会调用navigationType
。您可以使用stopLoading
来确定操作是什么) 。应该可以从那里调用webView:didFailWithError:
(虽然webView可能仍然会调用{{1}}方法,但我不确定...请参阅第一部分,了解如何处理该问题。) / p>