2016-05-12 40 views
0

什麼會的切換從一個UIWebView來WKWebView代表

webView.delegate = self 

相當於是一個WKWebView?我有

webView2.UIDelegate = self 

但它不按預期工作。

+0

有'navigationDelegate'允許您處理頁面加載事件。 – paulvs

+0

不讓我使用水龍頭手勢 – tda

+0

你想要做什麼?添加輕擊手勢識別器以與Web視圖HTML內容交互? – paulvs

回答

0

您確定only更改爲代碼正在更改UIWebViewWKWebView?我做了一個示例項目,輕擊手勢識別器同時適用於UIWebViewWKWebView。以下是相關代碼:

class ViewController: UIViewController, UIGestureRecognizerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let webView = WKWebView(frame: view.frame) 
     view.addSubview(webView) 
     webView.translatesAutoresizingMaskIntoConstraints = false 
     let urlString = "https://www.google.com" 
     let url = NSURL(string: urlString)! 
     let urlRequest = NSURLRequest(URL: url) 
     webView.loadRequest(urlRequest) 

     let recognizer = UITapGestureRecognizer(target: self, action: #selector(webViewTapped)) 
     recognizer.delegate = self 
     webView.addGestureRecognizer(recognizer) 
    } 

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return true 
    } 

    func webViewTapped(recognizer: UITapGestureRecognizer) { 
     print("Tapped") 
    } 
} 
+0

在點擊視圖後,它必須位於我的函數中。 – tda

0

您可以使用鍵值觀察來監視WKWebView的canGoBack和canGoForward。

SWIFT 3

將兩個鍵值觀察者添加到WKWebView。

let webView = WKWebView(frame: view.frame) 
view.addSubview(webView) 

webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoBack), options: .new, context: nil) 
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoForward), options: .new, context: nil) 

現在,在您的視圖控制器中實現observeValue(forKeyPath :)方法。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 

    if keyPath == #keyPath(WKWebView.canGoBack) || keyPath == #keyPath(WKWebView.canGoForward) { 
     // Do Something... 
    } 
} 

例如,您可以在按鈕的變化色調顏色中添加類似的內容。

backButton.imageView?.tintColor = webView.canGoBack ? UIColor.blue : UIColor.gray 
forwardButton.imageView?.tintColor = webView.canGoBack ? UIColor.blue : UIColor.gray 

我發現這種方法是通過閱讀這裏的一篇文章。

https://www.hackingwithswift.com/example-code/wkwebview/how-to-monitor-wkwebview-page-load-progress-using-key-value-observing