WKWebView nicht laden-Webseite dargestellt leere Bildschirm in Swift
Dieser code sollte zum laden der Apple-homepage, sondern zeigt einen leeren Bildschirm.
Dies geschieht mit HTTP-und HTTPS-URLs.
Code:
import UIKit
import WebKit
class WebViewController: UIViewController, WKUIDelegate{
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
Ich habe versucht, die änderung von "App-Transport-Security-Einstellungen' können Sie beliebigen laden. Nicht etwas ändern.
Screenshots:
View-Hierarchie:
Safari-debug-Konsole für den simulator:
- Dein code funktioniert einwandfrei. Ich habe versucht, es im demo. Ich denke, es könnte andere Frage.
- Ich habe nicht alle storyboard-Dateien in meine app. Alle seine code.
- Wann ist
loadView
genannt? Ist es vor oder nachviewDidLoad
? Ich sehe nicht, rief es überall, und das ist, wo Sie tatsächlich erstellen Sie Ihre web-Ansicht - Ja der code ist von der Apple-website, aber weiß nicht, warum ich nicht bekommen kann es arbeiten. Es ist das erste mal, dass ich bin mit WKWebView.
- Ja. Sie haben es gut funktioniert. versuchen Sie nur diesen code in einer demo.
- loadView wird aufgerufen, bevor viewDidLoad
- Nur weil der code für
loadView
geschrieben, bevorviewDidLoad
, macht es nicht automatisch aufgerufen werden, bevor. - Dieser code ist aus dem apples offizielle Leitfaden für Entwickler WkWebView
- Und Sie sagen, dass loadView wird zuerst aufgerufen?
- ja so sieht es aus. developer.apple.com/documentation/uikit/uiviewcontroller/...
- Ich weiß nicht, ob dies der einzige Weg ist, aber ich habe eine-webkit-Ansicht in der storyboard, eine Steckdose für es
@IBOutlet weak var webView: WKWebView!
, entfernt IhrewebView
var und ersetzt es mit diesem Anschluss (Linie 7 glaube ich), und es funktioniert. - Meine app kein storyboard oder nib-Dateien an. Alle seine in-code. Was soll ich tun?
- Wie funktioniert Xcode wissen, welche Ansicht zuerst geladen? Die leere Leinwand ist nicht, weil die Seite nicht laden, es ist, weil die anzeigen ist nicht. Versuchen Sie, den Bildschirm zu sagen "Hallo", mit code, und wir werden es von dort nehmen.
- Ansicht ist definitiv laden, siehe screenshot für die erfassten view-Hierarchie. Setze ich die Hintergrundfarbe rot. Ich habe auch Haltepunkt für beide Methoden, und Sie sind in der Ausführung sicher.
- Hast du es geschafft, "Hallo" auf dem Bildschirm, indem Sie code in der gleichen Datei, mit der wir arbeiten?
- Ich habe die gleichen Probleme, WKWebView funktioniert auf dem Gerät, aber kein Simulator. Allerdings UIWebView funktioniert im Simulator. Ich habe BitDefender auf meinem Mac installiert, könnte das sein, was die Ursache WKWebView nicht in der Sim?
- Könnte es sein. Öffnen Sie eine beliebige iPhone-simulator und starten Sie die safari-app auf dem simulator, wenn Sie nicht in der Lage, laden von websites, die auf dem simulator safari, es ist eine gute chance, dass der Täter sein könnte Bitdefender oder eine ähnliche software auf dem computer installiert, blockiert das Netzwerk
- Hier ist die Antwort auf eine Frage, die mit einem ähnlichen problem! stackoverflow.com/questions/44285901/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich die Lösung gefunden. Das problem wurde verursacht durch AVG AntiVirus ist webshield. Für einige Grund, AVG webshield behandelt alle Netzwerk-Kommunikation, vom simulator als betrügerisch.
Der folgende screenshot zeigt die safari-app läuft auf dem simulator. Es sagt, dass http://www.apple.com nicht sicher ist, oder jede andere website.
Dem folgenden screenshot ist aus dem system.Protokoll mit Fehler bei webkit.
Repliziert werden können dieses problem durch die Installation von AVG antivirus-und einschalten der webshield. WKWebview in Ihrer App(Über den simulator) nicht geladen, nichts.
Ich verstehe nicht, warum es nicht funktioniert auf einem Gerät zocken. Es hätte ein anderes problem mit dem Gerät. Ich auch gelöscht, der abgeleiteten Daten Ordner, die eigentliche app und musste das Gerät neu gestartet.
Danke an alle für die Antworten und Hilfe.
Gebäude eine App für den Mac?
Wenn Sie erstellen eine app für den Mac, stellen Sie sicher, dass Sie
App Sandbox
AUF in der Ziel-und tickNetworks
Ausgehende Verbindungen.Update: Wenn Sie lieber den langen Weg, fügen Sie den folgenden auf YourAppName.Berechtigungen
webView.loadHTMLString
schlägt fehl, wenn für ausgehende verbindungen nicht erlaubt sind ??♂️Den richtigen Weg, mit auto-layout und Konstante 10 für alle Geräte:
in der info.plist:
Der folgende code funktioniert Prima für mich in Xcode 9.3:
Hier ist das Ergebnis:
isLoading
Eigenschaft desWKWebView
zu Debuggen.Können Sie versuchen, folgenden code
Ausgabe
Dein code ist in Ordnung, die
Produziert dies,