macOS, iOS

[iOS] webview에서 새 탭 열리는 부분 처리하기

SweetDev 2019. 12. 18. 20:57
import UIKit
import QRCodeReader
import AVFoundation
import WebKit
import SideMenu

class HomeViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
  
  @IBOutlet weak var webView: WKWebView!
  
  var popupWebView: WKWebView?
  
  @IBAction func didTapSideBarButton(_ sender: Any) {
  }

  func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    popupWebView = WKWebView(frame: view.bounds, configuration: configuration)
    popupWebView?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    popupWebView?.navigationDelegate = self
    popupWebView?.uiDelegate = self
    view.addSubview(popupWebView!)
    return popupWebView!
  }
  
  func webViewDidClose(_ webView: WKWebView) {
    webView.removeFromSuperview()
    popupWebView = nil
  }
  
  override func viewDidLoad() {
    super.viewDidLoad()
    
    webView.uiDelegate = self
    webView.navigationDelegate = self

    webView.configuration.preferences.javaScriptCanOpenWindowsAutomatically = true
}

 

[출처]

https://blog.nextzy.me/ios-handling-popup-new-window-inside-web-view-c9c91b23ac2b