WKWebView не отображает веб-сайт (Swift 4, iOS 11, Xcode 9.3)

По какой-то причине WKWebView в моем приложении не отображает такие веб-сайты, как «https://www.google.com.au». Я попытался изменить «Разрешить произвольные нагрузки» на «ДА» в info.plist, но это не решило проблему.

ПОЖАЛУЙСТА ПОМОГИ!!!!! Спасибо

Мой код:

import UIKit
import WebKit

class ViewController: UIViewController {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
}

Скриншот StoryBoard: WKWebView не отображает веб-сайт (Swift 4, iOS 11, Xcode 9.3)

Вы когда-нибудь решали эту проблему? Если да, пожалуйста, обновите его, указав ответ. У меня похожая проблема. Спасибо!

Curious101 28.06.2018 07:14

Нет, я не решил это. Пришлось использовать код вместо раскадровки. Спасибо

Matthew Cho 28.06.2018 07:38

В моем случае это было разрешено настройкой NSAppTransportSecurity в info.plist.

tokentoken 21.07.2018 04:04

Вы проверяли, включен ли в вашей системе какой-либо антивирус? У меня возникла аналогичная проблема, и она была решена отключением моего антивирусного веб-экрана avg.

Vineeth 29.09.2018 15:56

@Vineeth Да, это была проблема. Приносим извинения за то, что не обновили этот пост Если возникает та же проблема, и вы все перепробовали, как сказал Винит, это, вероятно, связано с активным антивирусным веб-экраном.

Matthew Cho 14.01.2019 03:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
5
7 315
3

Ответы 3

Подключите WKNavigationDelegate, это исправит, что веб-страница не загружается, попробуйте следующий код. Любые ошибки, возникающие при загрузке веб-страницы, будут распечатаны в делегате webViewDidFail.

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.navigationDelegate = self
        webView.load(request)
    }
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        print(error)
    }
}

Я пробовал использовать ваш код, но экран все еще пустой (белый экран) и сообщения об ошибках не появляются

Matthew Cho 06.04.2018 07:23

Попробуйте вызвать displayWebPage: после метода ViewWillAppear: Animated.

byJeevan 06.04.2018 07:38

Вы уверены, что это сработало для меня, и убедитесь, что розетки подключены.

BXV 06.04.2018 08:00

вызов функции после ViewWillAppear не работает, и да, мои розетки подключены. Есть ли вероятность, что неправильный не мой код, а, может быть, настройки Xcode или настройки симулятора?

Matthew Cho 06.04.2018 08:09

установить делегатов webView.

    webView.UIDelegate = self
    webView.navigationDelegate = self

а также попробуйте добавить свой домен в список доменов исключений

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>google.com.au</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

Подключите контроллер к WKUIDelegate, добавьте метод loadView() в контроллер представления и инициализируйте веб-представление с помощью WKWebViewConfiguration.

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    @IBOutlet weak var webView: WKWebView!
    
    var webView: WKWebView!
    
    override func loadView() {
        let myConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: myConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
}

Источник: Веб-просмотр WK

Другие вопросы по теме