2015-04-09 12 views
6

Ho una WKWebView che carica una pagina in iOS. Se l'utente si sposta a un'altra pagina nel WKWebView, posso ottenere l'URL hanno cliccato come segue:Ottieni l'URL di tutti gli articoli TAPpati con WKWebView

var clickedUrl = String() 

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { 

    clickedUrl = webView.URL?.absoluteString as String! // GETS URL OF CURRENT PAGE LOADED 
} 

Se l'utente va su YouTube, clickedUrl = http://www.youtube.com, che è grande. TUTTAVIA ... Se l'utente fa clic su un video - niente. E un altro video - niente. Non ottengo l'URL del video cliccato. Lo stesso accade su Vimeo e su vari altri siti.

Ho fatto qualche ricerca qui e ho trovato altri post, e sembrerebbe che questo abbia qualcosa a che fare con 'WKWebView non riporta la fine del caricamento sui frame non principali', ma nessuna spiegazione su come ottenere all'URL che è stato caricato. Immagino che questo abbia qualcosa a che fare con siti come YouTube che stanno usando JavaScript per navigare verso altre pagine sul loro sito e caricarle.

Ho anche provato webView(_:decidePolicyForNavigationAction:). Questa funzione è più prolissa, ma questa funzione non rileva l'URL dei link cliccati all'interno di siti come YouTube. Quello che voglio fare è ottenere l'URL di tutto ciò che l'utente fa clic. Immagino di dover approfondire NSURL o NSURLRequest per ottenere questo, ma non riesco a capire come farlo. Qualsiasi aiuto sarebbe molto apprezzato.

Scuse ... invitiamo a consultare il duplicato/domanda simile: Detect when WKWebView has finished loading EVERY time

+0

Ciao Andre, hai risolto questo problema? –

+0

Purtroppo no. Sono tornato su UIWebView per progredire con il mio progetto. Ci riproverà quando verrà la prossima versione di Swift per vedere se è stata riparata. L'ho sollevato come problema nel forum di supporto di WKWebView su Apple. – AT3D

+0

Possibile duplicato di [Rileva quando WKWebView ha terminato di caricare OGNI volta] (http://stackoverflow.com/questions/29603010/detect-when-wkwebview-has-finished-loading-every-time) – Moritz

risposta

2

Sarà necessario osservare WKWebViews URL KVO proprietà:

Swift:

webView.addObserver(self, forKeyPath: "URL", options: .New, context: nil) 

Objective-C:

[webView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:NULL]; 

Quindi accedere alla proprietà URL di WKWebViews come si farebbe normalmente in observValueForKeyPath: ofObject: change: context.

Problemi correlati