【问题标题】:How do I know when a page has failed to load in UIWebView as opposed to being "Stopped" by the user?我如何知道页面何时无法在 UIWebView 中加载,而不是被用户“停止”?
【发布时间】:2009-08-07 09:34:34
【问题描述】:

我的应用程序中有一个 UIWebView,用于提供网页浏览功能。

我的工具栏上有一个按钮,可以调用

-(void)stopLoading;

在 UIWebView 上。这样做的问题是,当这个方法被发送到 web 视图时,delegate 会收到

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

消息。此调用附带的错误是:无法完成操作。 (NSURLErrorDomain 错误 -999。)

我还使用 didFailLoad 消息来判断页面是否实际加载失败 - 在这种情况下,我会向用户显示一个 html 格式的消息,以便向他们传达这个失败。

所以问题在于,如果用户点击停止按钮,则会显示错误页面,而不仅仅是显示在停止之前加载的页面的任何部分。

我曾希望 NSError.h 包含我可以比较的错误代码的枚举 - 但似乎我必须根据我对日志中出现的错误代码的观察来制作自己的 - 这不太理想,因为它们将来可能会改变......

任何建议都会很棒,谢谢。

【问题讨论】:

  • 当 stopLoading 被调用时,在控制器中切换一个用户特别要求停止页面加载的标志。在您的委托方法中检查此标志并继续。

标签: iphone objective-c uikit uiwebview nserror


【解决方案1】:

我能找到解决此问题的最佳方法是使用 webView 给出的错误代码创建一个枚举。

看起来他们不会改变,但如果他们改变了,好吧 - 哼哼。

所以现在,在我的加载失败方法中,我只是将错误对象中的错误代码与我的枚举进行比较,我可以看到发生了什么 - 看起来有点像这样:

typedef enum {  
    BrowserErrorHostNotFound = -1003,
    BrowserErrorOperationNotCompleted = -999,
    BrowserErrorNoInternetConnection = -1009
} BrowserErrorCode;

【讨论】:

    【解决方案2】:

    这些错误代码在 Foundation.framework 中的 NSURLError.h 中定义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2012-07-31
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多