In meiner iPhone App habe ich ein UIWebView, in dem ich einen lokalen HTML-Code lade. Alles funktioniert gut, aber jetzt möchte ich mit lokalen Links (zu Fußnoten) umgehen können: Wenn ich auf einen lokalen Link klicke, möchte ich in die Fußnote springen können und dann zurückkommen können .UIWebView shouldStartLoadWithRequest nur einmal aufgerufen?
<a href="#tofootnote">jump to footnote</a>
ich behandelt dies durch meinen Code should Hinzufügen und lokalen Link klickt abfangen; wenn ein lokaler Link angeklickt wird, arbeite ich meine Magie (verstecken Sie einige ui-Elemente, fügen Sie einen Zurück-Button, etc ..); Ein Klick auf den Zurück-Button bringt mich zurück zum ursprünglichen Ort im HTML-Dokument.
Das Problem besteht darin, dass das Klicken auf ONCE AGAIN auf der Verknüpfung nicht mehr ruft, sollte StartLoadWithRequest. Das heißt, der folgende Code:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"foo bar");
return YES;
}
zeigt nur „foo bar“ ONCE (eigentlich zweimal - das erste Mal, wenn ich zunächst das Dokument laden), aber nur einmal danach, und zwar unabhängig davon, wie oft ich Klicken Sie auf den lokalen Link
Also, es sei denn, jemand hat eine bessere Erklärung, ich vermute, dass die UIWebView das Dokument oder Link oder etwas zwischenspeichert und nicht mehr den Handler nach dem ersten Aufruf anruft; Wenn dies der Fall ist, wie kann ich diesen internen Cache löschen? (ohne das Dokument erneut zu laden)
PS. Ich lade die UIWebView mit loadHTMLString (weil ich die baseURL einrichten muss), so dass ich die Cache-Richtlinie für die ursprüngliche Ladeanforderung nicht einrichten kann. – Alex
Eigentlich funktioniert auch die Verwendung von URL-Anfrage und Cache-Politik immer noch nicht. Hilf mir bitte! – Alex