UIWebView beendet Ereignis geladen
Frage
Ist es möglich, ein Ereignis zu starten, wenn ein UIWebView (iPhone) beendet hat, die URL zu laden.
Wie kann ich herausfinden, die aktuelle URL der UIWebView?
Lösung
Ja, das ist möglich. Verwenden Sie das UIWebViewDelegate
Protokoll und implementieren Sie die folgende Methode in Ihre Stellvertretung:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Wenn Sie die URL möchten, können Sie die letzte Anforderung mit der Eigenschaft request
erhalten:
webView.request.URL
Andere Tipps
Keine der gefundenen Lösungen für mich gearbeitet.
Dann fand ich dieses Beispiel, das zumindest viel besser als jede andere Lösung funktioniert ich auf Google / Stackoverflow gefunden.
Sehr einfache Methode:
Schritt 1:. Delegat UIWebViewDelegate
in Header-Datei
Schritt 2: Fügen Sie folgende webViewDidFinishLoad
Methode aktuelle URL von webview
zu bekommen
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"Current URL = %@",webView.request.URL);
//-- Add further custom actions if needed
}
Pascal Antwort für den „immer die URL“ Teil ist in Ordnung.
Allerdings!
Von UIWebViewDelegate in der Dokumentation von Apple: „WebViewDidFinishLoad: Sent nach einer Web-Ansicht einen Rahmen fertig geladen.“
Rahmen! = Seite.
webViewDidFinishLoad wird aufgerufen, wenn die Seite „fertig geladen“ wird. Es kann auch viele Male vor der dann aufgerufen werden. Seite Lasten von Amazon.com kann ein Dutzend Anrufe webViewDidFinishLoad erzeugen.
Wenn Sie die Seite Quelle steuern, dann können Sie einen Belastungstest für sie machen, und es wird funktionieren, für diesen Fall. Wenn Sie nur über Pflege genannt zu werden „nachdem die Seite fertig geladen ist“, dann ist webViewDidFinishLoad ausreichend.
Für beliebige Seiten, mit beliebigen JavaScript, Werbebannern in Permanenz Laden oder Banner Autoscrolling oder ein Videospiel Umsetzung der Idee einer Seite zu sein „fertig geladen“ verbohrt ist.