You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.4 KiB

  1. //
  2. // WkWebViewController.swift
  3. // GME Remit
  4. //
  5. // Created by Mac on 12/25/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import WebKit
  10. class WkWebViewController: UIViewController {
  11. var webView: WKWebView!
  12. var url: String?
  13. var headers: [KftcHeader]?
  14. var activityIndicator: UIActivityIndicatorView?
  15. override func loadView() {
  16. let webConfiguration = WKWebViewConfiguration()
  17. webView = WKWebView()
  18. webView.uiDelegate = self
  19. webView.navigationDelegate = self
  20. self.view = webView
  21. }
  22. override func viewDidLoad() {
  23. super.viewDidLoad()
  24. addCloseButton()
  25. self.activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
  26. self.webView.addSubview(activityIndicator!)
  27. self.webView.isUserInteractionEnabled = true
  28. self.activityIndicator?.startAnimating()
  29. self.activityIndicator?.isHidden = false
  30. self.activityIndicator?.hidesWhenStopped = true
  31. self.webView.bringSubview(toFront: activityIndicator!)
  32. let headers = self.headers ?? []
  33. print(self.url)
  34. if let myURL = URL(string: self.url ?? "") {
  35. var myRequest = URLRequest(url: myURL)
  36. headers.forEach({
  37. myRequest.setValue($0.key ?? "", forHTTPHeaderField: $0.value ?? "")
  38. })
  39. print(myRequest.allHTTPHeaderFields)
  40. webView.load(myRequest)
  41. }
  42. }
  43. private func addCloseButton() {
  44. let button = UIBarButtonItem.init(title: "Close", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self._dismiss))
  45. self.navigationItem.rightBarButtonItem = button
  46. }
  47. @objc private func _dismiss() {
  48. self.dismiss(animated: true, completion: nil)
  49. }
  50. }
  51. extension WkWebViewController: WKUIDelegate, WKNavigationDelegate {
  52. func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
  53. print("start")
  54. activityIndicator?.center = self.view.center
  55. // activityIndicator?.isHidden = false
  56. activityIndicator?.startAnimating()
  57. }
  58. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  59. // activityIndicator?.isHidden = true
  60. activityIndicator?.stopAnimating()
  61. }
  62. }