que tratar de conseguir una función llamada después de mi Contenido dentro de WKWebView está totalmente cargado. He encontrado el «didFinishNavigation de función» en la Manzana de Swift WKNavigation Documentación.

func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
    println("WebView content loaded.")
}

Pero la función nunca te llama.

import UIKit
import WebKit

class ViewController: UIViewController WKNavigationDelegate {

   override func loadView() {
       super.loadView()

       self.webView = WKWebView(frame:self.containerView.frame, configuration: WKWebViewConfiguration())
       self.containerView.addSubview(webView!)
       self.containerView.clipsToBounds = true

   }

   override func viewDidLoad() {
       super.viewDidLoad()

       var url = NSURL(string:"http://google.com/")
       var req = NSURLRequest(URL:url)
       self.webView!.loadRequest(req)
   }

   func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
       println("WebView content loaded.")
   }

}
InformationsquelleAutor Darx | 2014-08-26

1 Comentario

  1. 54

    Que no se ajuste a la navigationDelegate. Conjunto y que debe estar bien.

    class ViewController: UIViewController, WKNavigationDelegate {
    
    
      override func viewDidLoad() {
        super.viewDidLoad()
    
        let noLayoutFormatOptions = NSLayoutFormatOptions(rawValue: 0)
    
        let webView = WKWebView(frame: CGRectZero, configuration: WKWebViewConfiguration())
        webView.setTranslatesAutoresizingMaskIntoConstraints(false)
        webView.navigationDelegate = self
        view.addSubview(webView)
    
        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[webView]|", options: noLayoutFormatOptions, metrics: nil, views: ["webView": webView]))
    
        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: noLayoutFormatOptions, metrics: nil, views: ["webView": webView]))
    
        let url = NSURL(string: "http://google.com")
        let request = NSURLRequest(URL: url)
        webView.loadRequest(request)
      }
    
      func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
        print("Finished navigating to url \(webView.url)");
      }
    
    }

    Y aquí es un poco mejor versión con Swift 3.

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let configuration = WKWebViewConfiguration()
            let webView = WKWebView(frame: .zero, configuration: configuration)
            webView.translatesAutoresizingMaskIntoConstraints = false
            webView.navigationDelegate = self
            view.addSubview(webView)
    
            [webView.topAnchor.constraint(equalTo: view.topAnchor),
             webView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
             webView.leftAnchor.constraint(equalTo: view.leftAnchor),
             webView.rightAnchor.constraint(equalTo: view.rightAnchor)].forEach  { anchor in
                anchor.isActive = true
            }
    
            if let url = URL(string: "https://google.com/search?q=westworld") {
                webView.load(URLRequest(url: url))
            }
        }
    
    }
    
      extension ViewController: WKNavigationDelegate {
    
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            print("Finished navigating to url \(webView.url)")
        }
    
    }
    • un error en el controlador de WKWebView no tiene ningún miembro de request, ¿cómo saber a que la solicitud de la navegación pertenece?
    • ¿cómo allZeros trabajo ?
    • allZeros no es válido ahora. Lo que solía ser la forma de asignar un valor vacío para enum en versiones anteriores de Swift. He editado la respuesta ahora. Gracias por darse cuenta de que 🙂
    • Usted tiene que agregar configuración.las preferencias.javaScriptEnabled = true; para su configuración, de lo contrario no funcionará.
    • No creo que javascript debe estar habilitado para la navegación delegado de trabajo. ¿Tienes adecuados para el proyecto de instalación donde usted me puede mostrar que javascriptEnabled es verdadero para ser capaz de navegación delegado de bonificación.
    • Tienes razón que no necesita. He cometido un error. Quise decir que usted necesita javaScriptCanOpenWindowsAutomatically = true (al menos en Xcode 8 para Swift 3)
    • Estás en lo correcto. Tengo como 3 stackoverflow pestañas hasta ahora y creo que fue al comentar sobre la pregunta equivocada. Esto sólo es necesario si se utiliza el servicio de alertas y confirma dentro de la app nativa que usted necesita para configurar esto.

Dejar respuesta

Please enter your comment!
Please enter your name here