FirstTabViewController.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. //
  2. // FirstTabViewController.swift
  3. // AppBuilder
  4. //
  5. // Created by Kevin Maulana on 29/03/22.
  6. //
  7. import UIKit
  8. import WebKit
  9. class FirstTabViewController: UIViewController, WKUIDelegate, UIScrollViewDelegate, UIGestureRecognizerDelegate {
  10. @IBOutlet weak var webView: WKWebView!
  11. var address = ""
  12. private var lastContentOffset: CGFloat = 0
  13. override func viewDidLoad() {
  14. super.viewDidLoad()
  15. let cpaasMode = PrefsUtil.getCpaasMode()
  16. let isBurger = cpaasMode == PrefsUtil.CPAAS_MODE_BURGER
  17. // navigationController?.navigationBar.backgroundColor = .white
  18. navigationController?.setNavigationBarHidden(!isBurger, animated: false)
  19. let tapGesture = UITapGestureRecognizer(target: self, action: #selector(collapseDocked))
  20. tapGesture.cancelsTouchesInView = false
  21. tapGesture.delegate = self
  22. webView.scrollView.addGestureRecognizer(tapGesture)
  23. let refreshControl = UIRefreshControl()
  24. refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
  25. webView.scrollView.addSubview(refreshControl)
  26. webView.scrollView.delegate = self
  27. }
  28. override func viewWillAppear(_ animated: Bool) {
  29. let me = UserDefaults.standard.string(forKey: "me")
  30. var myURL : URL?
  31. switch(ViewController.sURL){
  32. case "0":
  33. address = "https://qmera.io/nexilis/pages/tab1-main-only?f_pin=\(me ?? "")"
  34. myURL = URL(string: address)
  35. case "1":
  36. address = "https://qmera.io/nexilis/pages/tab3-main-only?f_pin=\(me ?? "")"
  37. myURL = URL(string: address)
  38. case "2":
  39. address = "https://qmera.io/nexilis/pages/tab1-main?f_pin=\(me ?? "")"
  40. myURL = URL(string: address)
  41. case "3":
  42. address = "https://qmera.io/nexilis/pages/tab3-commerce?f_pin=\(me ?? "")"
  43. myURL = URL(string: address)
  44. default:
  45. if(!ViewController.sURL.isEmpty){
  46. if(ViewController.sURL.lowercased().contains("https://")){
  47. address = ViewController.sURL
  48. myURL = URL(string: address)
  49. }
  50. else {
  51. address = "https://\(ViewController.sURL)"
  52. myURL = URL(string: address)
  53. }
  54. }
  55. }
  56. print(address)
  57. if let u = myURL{
  58. let myRequest = URLRequest(url: u)
  59. webView.load(myRequest)
  60. }
  61. self.navigationController?.navigationBar.topItem?.title = Bundle.main.displayName
  62. let cpaasMode = PrefsUtil.getCpaasMode()
  63. let isBurger = cpaasMode == PrefsUtil.CPAAS_MODE_BURGER
  64. navigationController?.setNavigationBarHidden(!isBurger, animated: false)
  65. }
  66. override func viewDidAppear(_ animated: Bool) {
  67. }
  68. func scrollViewDidScroll(_ scrollView: UIScrollView) {
  69. if (self.lastContentOffset > scrollView.contentOffset.y && scrollView.contentOffset.y < (scrollView.contentSize.height - scrollView.frame.size.height)) {
  70. showTabBar();
  71. }
  72. else if (self.lastContentOffset != 0 && self.lastContentOffset < scrollView.contentOffset.y && self.lastContentOffset >= 0) {
  73. hideTabBar();
  74. }
  75. self.lastContentOffset = scrollView.contentOffset.y
  76. self.collapseDocked()
  77. }
  78. @objc func collapseDocked() {
  79. if ViewController.isExpandButton {
  80. ViewController.expandButton()
  81. }
  82. }
  83. @objc func reloadWebView(_ sender: UIRefreshControl) {
  84. webView.reload()
  85. sender.endRefreshing()
  86. }
  87. func hideTabBar() {
  88. var viewController = UIApplication.shared.windows.first!.rootViewController
  89. if !(viewController is ViewController) {
  90. viewController = self.parent
  91. }
  92. if ViewController.middleButton.isDescendant(of: viewController!.view) {
  93. DispatchQueue.main.async {
  94. if let viewController = viewController as? ViewController {
  95. viewController.tabBar.isHidden = true
  96. }
  97. ViewController.removeMiddleButton()
  98. }
  99. }
  100. }
  101. func showTabBar() {
  102. if(ViewController.alwaysHideButton){
  103. return
  104. }
  105. var viewController = UIApplication.shared.windows.first!.rootViewController
  106. if !(viewController is ViewController) {
  107. viewController = self.parent
  108. }
  109. if !ViewController.middleButton.isDescendant(of: viewController!.view) {
  110. ViewController.isExpandButton = false
  111. if let viewController = viewController as? ViewController {
  112. viewController.tabBar.isHidden = false
  113. viewController.createMidFloatingButton()
  114. }
  115. }
  116. }
  117. func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
  118. scrollView.pinchGestureRecognizer?.isEnabled = false
  119. }
  120. /*
  121. // MARK: - Navigation
  122. // In a storyboard-based application, you will often want to do a little preparation before navigation
  123. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  124. // Get the new view controller using segue.destination.
  125. // Pass the selected object to the new view controller.
  126. }
  127. */
  128. }