UIWebView carregamento Evento acabado
Pergunta
É possível iniciar um evento quando um UIWebView (iPhone) tem carregamento terminado o URL.
Como posso saber, a URL atual do UIWebView?
Solução
Sim, isso é possível. Use o protocolo UIWebViewDelegate
e implementar o seguinte método em sua delegado:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Se quiser que o URL, você pode obter a última solicitação usando o request
propriedade:
webView.request.URL
Outras dicas
Nenhuma das soluções encontradas funcionou para mim.
Então eu encontrei este exemplo que, pelo menos, funciona muito melhor do que qualquer outra solução que eu encontrei no Google / StackOverflow.
método muito simples:
Passo 1:. Set UIWebViewDelegate
delegado no arquivo de cabeçalho
Passo 2: Adicionar seguinte método webViewDidFinishLoad
para obter URL atual de webview
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"Current URL = %@",webView.request.URL);
//-- Add further custom actions if needed
}
A resposta de Pascal para a parte "obter a URL" é bom.
No entanto!
De documentação do UIWebViewDelegate, da Apple: "WebViewDidFinishLoad: enviados após uma vista teia terminar o carregamento de um quadro."
Quadro! = Página.
webViewDidFinishLoad é chamado quando a página é "feito de carregamento". Ele também pode ser chamado muitas vezes antes disso. carregamento da página de Amazon.com pode gerar uma dúzia de chamadas para webViewDidFinishLoad.
Se você controlar o código fonte da página, então você pode fazer um teste de carga para ele, e ele vai trabalhar, para esse caso. Se você só se preocupam com sendo chamado "depois que a página é feito o carregamento", então webViewDidFinishLoad é adequada.
Para páginas arbitrárias, com JavaScript arbitrário, banners carregamento de anúncios em perpetuidade, ou deslocamento automático banners, ou a implementação de um jogo de vídeo, a própria idéia de uma página a ser "feito o carregamento" é equivocada.