xcode 16.4 使用 webview
01.新增專案 :
template 選 iOS -> App ,Interface 選 Storyboard ,Language 選 swift


02.編輯 ViewController.swift
(1) 新增 import WebKit
import WebKit
(2)在 class ViewController: UIViewController { }內新增
var webView: WKWebView!
override func loadView() {
let prefs=WKWebpagePreferences();
prefs.allowsContentJavaScript = true
let webConfiguration = WKWebViewConfiguration()
webConfiguration.defaultWebpagePreferences = prefs
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.navigationDelegate = self
view = webView
}
(3) 在 override func viewDidLoad() {} super.viewDidLoad() 竹人女戈田後新增
let myURL = URL(string:"https://tw.yahoo.com ) let myRequest = URLRequest(url: myURL!) webView.load(myRequest) webView.allowsBackForwardNavigationGestures = true
03.處理當網頁中的連結 target=”_blank” 無法顯示的問題
(01) 在ViewController.swift 新增
extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.targetFrame == nil {
decisionHandler(.cancel)
webView.load(navigationAction.request)
return
}
decisionHandler(.allow)
}
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
// Handle creation of new windows (e.g., for pop-ups)
return nil // Or return a new WKWebView for the pop-up
}
}
(02) 在 override func loadView() 內 的 view = webView 新增
webView.navigationDelegate = self
(03) 如果要使用外部瀏覽器打開,則
// 為求範例單純化這邊只檢查 targetFrame ,
// 實務上還是需要加上檢查 url 是不是合法可以開啟等等處理
if navigationAction.targetFrame == nil {
decisionHandler(.cancel)
UIApplication.shared.open( navigationAction.request )
return
}
參考資料 :
1.https://qiita.com/vc7/items/90bd7da89aee54936bfd