2015-09-24 9 views
5
  1. eine App mit UIWebView Stellen, die eine Webseite mit protokoll relativ Arten öffnen & Bilder, wie <img src="//example.com/image.png"> (Beispiele für http oder https).UIWebView nicht geladen Bilder aus protokollrelative URL

  2. Überschreiben Sie den Seitenladeprozess über Ihre benutzerdefinierte NSURLConnection, this way.

Ergebnis: es werden die Bilder nicht angezeigt! Obwohl Safari und andere Browser sie korrekt anzeigen ...

Antwort

3

Ich inspizierte die Seite in WebView geöffnet und sah seltsame Anforderungen dort. Sie sahen wie normale URLs aus, aber mit applewebdata Schema, z. applewebdata://art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png. Yay! Es kennt das "base" -Schema für die relative URL //art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png nicht und kennt es so, als sei es das falsche Schema von Apple. So ... das Problem ist hier:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [m_webView loadData:webdata 
       MIMEType:@"text/html" 
     textEncodingName:@"UTF-8" 
       baseURL:nil]; /// WTF! 
} 

Lösung: Speichern Sie einfach die anfängliche URL zu einem gewissen m_currentPageUrl, wenn die Anfrage starten, und dann geben sie an, wo es gemeint zu sein. :)