12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import UIKit
- import WebKit
- class WebViewViewController: UIViewController, WKNavigationDelegate {
- public lazy var webView: WKWebView = {
- let preferences = WKPreferences()
- preferences.javaScriptEnabled = false
- let configuration = WKWebViewConfiguration()
- configuration.preferences = preferences
- let view = WKWebView(frame: .zero, configuration: configuration)
- view.navigationDelegate = self
- return view
- }()
- init() {
- super.init(nibName: nil, bundle: nil)
- hidesBottomBarWhenPushed = true
- }
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
- if navigationAction.navigationType == .linkActivated,
- let url = navigationAction.request.url,
- url.host != nil,
- UIApplication.shared.canOpenURL(url) {
- UIApplication.shared.open(url)
- decisionHandler(.cancel)
- return
- }
- decisionHandler(.allow)
- }
- // MARK: - lifecycle
- override func viewDidLoad() {
- super.viewDidLoad()
- setupSubviews()
- }
- // MARK: - setup + configuration
- private func setupSubviews() {
- view.addSubview(webView)
- webView.translatesAutoresizingMaskIntoConstraints = false
- webView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
- webView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
- webView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 0).isActive = true
- webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
- }
- }
|