Como eu sei quando uma página não foi capaz de carga em UIWebView em vez de ser “Stopped” pelo usuário?
-
12-09-2019 - |
Pergunta
Eu tenho um UIWebView dentro do meu aplicativo que estou usando para fornecer funcionalidade de navegação na web.
Eu tenho um botão no meu barra de ferramentas que chama
-(void)stopLoading;
no UIWebView. O problema com isso é que quando esse método é enviado para o ponto de vista web, o delegado recebe o
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
mensagem. O erro que acompanha esta chamada é: Operação não pôde ser concluída. (Erro NSURLErrorDomain -999.)
Eu também uso a mensagem didFailLoad para dizer se a página realmente falhou em carga -. E, nesse caso, eu exibir uma mensagem de html formatado para usuário para se comunicar esta falha para eles
Assim, o problema é que se o usuário pressiona o botão de parada, a página de erro é mostrada em vez de apenas mostrar o que quer que partes da página carregada antes de ser parado.
Eu esperava que NSError.h continha uma enumeração de códigos de erro que eu poderia comparar contra - mas parece que eu vou ter que fazer o meu próprio com base em minhas observações sobre os códigos de erro que saem em meus logs - que é inferior a ideal, uma vez que poderia mudar no futuro ...
Qualquer sugestão seria ótimo, obrigado.
Solução 2
A melhor maneira que eu poderia encontrar para resolver este era criar um enum usando os códigos de erro dadas pelo webView.
Ele não olha como eles estão indo para a mudança, mas se o fizerem, bem -. Hum ho
Então, agora, no meu método de falha de carga Eu simplesmente comparar o código de erro do objeto de erro com o meu enum, e eu posso ver o que aconteceu - meio que parece com isso:
typedef enum {
BrowserErrorHostNotFound = -1003,
BrowserErrorOperationNotCompleted = -999,
BrowserErrorNoInternetConnection = -1009
} BrowserErrorCode;
Outras dicas
Esses códigos de erro são definidos no NSURLError.h, na Foundation.framework