Nella mia app per iPhone, ho un UIWebView in cui sto caricando un html locale. Tutto funziona alla perfezione, ma ora voglio essere in grado di gestire i collegamenti locali (a note): quando clicco su un link locale, voglio essere in grado di saltare alla nota a cui fa riferimento, quindi essere in grado di tornare indietro .UIWebView dovrebbeStartLoadWithRequest chiamato solo una volta?
<a href="#tofootnote">jump to footnote</a>
ho gestito questo aggiungendo il mio codice di shouldStartLoadWithRequest e intercettare i clic sui link locali; quando si fa clic su un collegamento locale, lavoro la mia magia (nascondi alcuni elementi dell'interfaccia utente, aggiungi un pulsante indietro, ecc.); cliccando sul pulsante indietro mi riporta alla posizione originale nel documento html.
Il problema è che se si fa clic di NUOVO ANCORA sul link non si effettuano più chiamate shouldStartLoadWithRequest. Vale a dire, il seguente codice:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"foo bar");
return YES;
}
visualizza solo "foo bar" ONCE (in realtà, due volte - la prima volta quando sto inizialmente il caricamento del documento), ma solo una volta dopo, indipendentemente da quante volte ho' m clic sul collegamento locale
Quindi, a meno che qualcuno non abbia una spiegazione migliore, suppongo che UIWebView memorizzi nella cache il documento o il collegamento o qualcosa e non chiami più il gestore dopo la chiamata iniziale; Se questo è il caso, come posso cancellare questa cache interna? (senza ricaricare il documento)
PS. Sto caricando UIWebView usando loadHTMLString (perché ho bisogno di impostare il baseURL), quindi non posso impostare il criterio di cache per la richiesta di caricamento originale. – Alex
In realtà, anche l'uso di urlrequest e della cache non funziona ancora. Aiutami per favore! – Alex