2010-05-14 12 views
11

Sono curioso di sapere se c'è un modo per rilevare una modifica del sito Web visualizzato all'interno di uno UIWebView. In un'app a cui sto lavorando, stiamo utilizzando uno UIWebView per presentare una parte delle funzionalità che sono in sostanza alcuni passaggi che l'utente deve seguire. Tuttavia, sarà una pagina specifica alla fine di questi passaggi che devo identificare e dopo di che l'app deve visualizzare una vista diversa.Ricevi notifiche sulla modifica di una pagina in UIWebView

Sfortunatamente il UIWebViewDelegate non sembra fare il trucco.

Qualche consiglio?

Avere un bel weekend e grazie
-f

risposta

21

Se i passaggi utente vengono separati su pagine diverse, e le UIWebView deve caricare le varie fasi, questo dovrebbe infatti essere possibile con i metodi delegato.

In questo esempio, diciamo che l'utente passa attraverso 3 fasi, di nome step1.htm, step2.htm e infine step3.htm. Questo codice rileva quando l'utente raggiunge il terzo e ultimo passaggio.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSString *URLString = [[request URL] absoluteString]; 
    if ([URLString isEqualToString:@"http://www.example.com/step3.htm"]) { 
     // The user reached step 3! 
    } 
    return YES; 
} 

Si noti che utilizzando il metodo absoluteString potrebbe non essere il modo migliore per scoprire dove l'utente sta visualizzando. Date un'occhiata a query, path, parameterString, ecc ...

+0

Oh in qualche modo mi sono perso. Grazie, è esattamente quello che stavo cercando! – flohei

+1

C'è un modo per ricevere una notifica quando la nuova pagina completa il caricamento? (questo metodo viene chiamato prima che inizi il caricamento) – Stan

+1

Per completarlo, è necessario ottenere la delega alla webView come: in ViewController.m: self.myWeview.delegate = self; e in ViewController.h: @interface ViewController: UIViewController turzifer

Problemi correlati