簡體   English   中英

Swift Webview 頁面不會打開頁面內的鏈接

[英]Swift Webview page will not open links within the page

我有一個應用程序,它的標簽是 webview。 在我使用的特定網站上,它不會打開鏈接。 在 safari 或其他瀏覽器上時,所有鏈接都會自動打開一個新選項卡。 我想讓用戶保持在同一個 webview 中。 我怎樣才能做到這一點? 下面是我的代碼。 我可以用 React Native 和 Flutter 做到這一點,但在 swift 中無法解決。 請幫忙。

class ExampleSecondViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func viewDidLoad() {
   super.viewDidLoad()
   let myURL = URL(string:"https://travelsecrets.live")
   let myRequest = URLRequest(url: myURL!)
   webView.load(myRequest)
   webView.allowsBackForwardNavigationGestures = true
   webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress),
       options: .new, context: nil)

 

       webView.configuration.preferences.javaScriptEnabled = true
}
 
 override func loadView() {
   let webConfiguration = WKWebViewConfiguration()
   webView = WKWebView(frame: .zero, configuration: webConfiguration)
   webView.uiDelegate = self
   view = webView
  }

 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: 
  [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "estimatedProgress" {
        print(Float(webView.estimatedProgress))
     }
  }
  }

您需要為您的 webView 實現 navigationDelegate:

override func loadView() {
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    // this delegate
    webView.navigationDelegate = self
    view = webView
}

並使用此方法:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
 if navigationAction.navigationType == WKNavigationType.linkActivated {
    webView.load(navigationAction.request)
    decisionHandler(.cancel)
    return
 }
 decisionHandler(.allow)
}

基於此線程: https://stackoverflow.com/a/51660446/10492380

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM