UIWebView периодически перезагружает iOS - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть UIWebView, который периодически перезагружается.WiFi и сотовая связь включены.Если я вручную переключаюсь между WiFi или Cellular, webView не перезагружает веб-страницу.Если устройство имеет только одно подключение (Wi-Fi или сотовая связь), перезагрузка не произойдет.

Есть ли способ периодически останавливать перезагрузку UIWebView?

class ViewController: UIViewController {

    // MARK: IBOutlets



    private(set) var uuid = UIDevice.current.identifierForVendor?.uuidString ?? ""
    lazy private var stringUrl = "https://someLink"

    // MARK: Lifecycle

    override func viewDidLoad() {
        super.viewDidLoad()

        backButtonView.alpha = 0
        NotificationCenter.default.addObserver(self, selector: #selector(statusManager), name: .flagsChanged, object: Network.reachability)
        self.webView.navigationDelegate = self
        self.webView.scrollView.delegate = self
        updateUserInterface()
    }

    // MARK: IBActions

    @objc private func statusManager(_ notification: Notification) {
        updateUserInterface()
    }

    // MARK: Private methods

    private func updateUserInterface() {
        guard let status = Network.reachability?.status else { return }
        if status == .unreachable {
            self.webView.isHidden = true
            self.noInternetConnectionView.isHidden = false
        }
    }

    private func loadRequest() {
        configureLoadingView(state: true)

        let request = URLRequest(url: URL(string: stringUrl)!)
        self.webView.load(request)
        self.webView.allowsBackForwardNavigationGestures = true

    }

    private func configureLoadingView(state: Bool) {
        UIView.animate(withDuration: 0.2) {
            self.loadingView.alpha = state ? 1 : 0
        }
    }
}

extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        if let stringUrl =  webView.url?.absoluteString { self.stringUrl = stringUrl }
        self.webView.isHidden = false
        configureLoadingView(state: false)
    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        if let url = webView.url, let stringUrl = webView.url?.absoluteString {
            if stringUrl.contains("some.com") {
                webView.stopLoading()
                UIApplication.shared.open(url)
            }
        }
    }
}
...