Wie kann ich wissen, wenn eine Seite ist fehlgeschlagen in UIWebView zu laden, im Gegensatz zu „Stopped“ durch den Benutzer zu werden?

StackOverflow https://stackoverflow.com/questions/1243854

Frage

Ich habe eine UIWebView in meiner Anwendung, die ich verwende Web-Browsing-Funktion zur Verfügung zu stellen.

Ich habe eine Schaltfläche auf meiner Symbolleiste der Anrufe

-(void)stopLoading;

auf der UIWebView. Das Problem dabei ist, dass, wenn dieses Verfahren auf die Web-Ansicht gesendet wird, der Delegierte der

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

Nachricht. Der Fehler dieser Aufruf begleitet, ist: Operation nicht abgeschlossen werden konnte. (NSURLErrorDomain Fehler -999).

Ich verwende die didFailLoad Nachricht zu sagen, auch wenn die Seite ist fehlgeschlagen tatsächlich zu laden - und in diesem Fall für I eine HTML-formatierte Nachricht an Benutzern diese Fehler zu ihnen kommunizieren

.

Das Problem ist also, dass, wenn der Benutzer die Taste anschlägt, wird die Fehlerseite statt nur gezeigt wird, zeigt was auch immer Teile der Seite geladen, bevor gestoppt wird.

Ich hatte gehofft, dass NSError.h eine Enumeration des Fehlercodes enthielt, die ich gegen vergleichen könnte - aber es scheint, wie ich muß werde meine eigenen basierend auf meinen Beobachtungen des Fehlercodes machen, die in meinem Logs kommen - die ist weniger als ideal, da sie sich in Zukunft ändern könnten ...

Irgendwelche Vorschläge wäre toll, danke.

War es hilfreich?

Lösung 2

Der beste Weg, den ich finden konnte, diese zu lösen war eine Enumeration mit dem Fehlercodes, die vom webView gegeben zu erstellen.

Es sieht nicht so aus, wie sie ändern gehen, aber wenn sie es tun, gut -. Hosummen

So, jetzt in meiner failed-to-Load-Methode vergleiche ich einfach den Fehlercode aus dem Fehlerobjekt mit meinem Enum, und kann ich sehen, was passiert ist - ein bisschen wie folgt aussieht:

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

Andere Tipps

Diese Fehlercodes sind definiert in NSURLError.h im Foundation.framework

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top