BBSSubjectDetailViewController.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // BBSSubjectDetailViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 2016/11/8.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import WebKit
  10. import Alamofire
  11. import AlamofireObjectMapper
  12. import SwiftyJSON
  13. import ObjectMapper
  14. import CocoaLumberjack
  15. class BBSSubjectDetailViewController: BaseWebViewUIViewController {
  16. @IBOutlet weak var progressView: UIProgressView!
  17. var loadUrl:String?
  18. var window:UIWindow?
  19. var button:UIButton?
  20. var subject:BBSSubjectData? {
  21. didSet {
  22. loadUrl = AppDelegate.o2Collect.genrateURLWithWebContextKey(DesktopContext.DesktopContextKey, query: DesktopContext.bbsItemDetailQuery, parameter: ["##subjectId##":subject?.id as AnyObject])
  23. }
  24. }
  25. override func viewWillAppear(_ animated: Bool) {
  26. self.window?.isHidden = false
  27. }
  28. override func viewWillDisappear(_ animated: Bool) {
  29. self.window?.isHidden = true
  30. }
  31. override func viewDidLoad() {
  32. super.viewDidLoad()
  33. createButton()
  34. self.theWebView()
  35. self.view = webView
  36. }
  37. func createButton(){
  38. let width = SCREEN_WIDTH
  39. let height = SCREEN_HEIGHT
  40. self.button = UIButton(frame: CGRect(x: 0,y: 0,width: 40,height: 40))
  41. self.button?.setImage(UIImage(named: "icon_bbs_reply_white"), for: UIControl.State())
  42. self.button?.addTarget(self, action: #selector(replyAction), for: .touchUpInside)
  43. self.window = UIWindow(frame: CGRect(x: width - 60, y: height - 60, width: 40, height: 40))
  44. self.window?.windowLevel = UIWindow.Level.alert + 1
  45. self.window?.backgroundColor = UIColor.green
  46. self.window?.layer.cornerRadius = 20
  47. self.window?.layer.masksToBounds = true
  48. self.window?.addSubview(self.button!)
  49. self.window?.makeKeyAndVisible()
  50. }
  51. func replyAction(sender:Any?){
  52. self.performSegue(withIdentifier:"showReplyActionSegue", sender: nil)
  53. }
  54. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  55. if segue.identifier == "showReplyActionSegue" {
  56. let navVC = segue.destination as! ZLNavigationController
  57. let destVC = navVC.topViewController as! BBSReplySubjectViewController
  58. destVC.subject = self.subject
  59. if let parentId = sender {
  60. destVC.parentId = parentId as? String
  61. }
  62. }
  63. }
  64. override func theWebView(){
  65. super.theWebView()
  66. webView.navigationDelegate = self
  67. webView.uiDelegate = self
  68. //self.view.insertSubview(webView, belowSubview: progressView)
  69. webView.allowsBackForwardNavigationGestures = true
  70. //监控进度
  71. //self.addObserver(webView, forKeyPath: "estimatedProgress", options: .new, context: nil)
  72. loadDetailSubject()
  73. }
  74. func loadDetailSubject(){
  75. webView.load(Alamofire.request(loadUrl!).request!)
  76. }
  77. @IBAction func unFromReplyBackSubject(_ segue:UIStoryboardSegue){
  78. loadDetailSubject()
  79. }
  80. override func didReceiveMemoryWarning() {
  81. super.didReceiveMemoryWarning()
  82. // Dispose of any resources that can be recreated.
  83. }
  84. override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
  85. if keyPath == "estimatedPrgress" {
  86. progressView.isHidden = webView.estimatedProgress == 1
  87. progressView.setProgress(Float(webView.estimatedProgress), animated: true)
  88. }
  89. }
  90. }
  91. extension BBSSubjectDetailViewController:WKNavigationDelegate,WKUIDelegate {
  92. func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
  93. DDLogDebug("didFailProvisionalNavigation \(navigation) error = \(error)")
  94. }
  95. func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
  96. DDLogDebug("didStartProvisionalNavigation \(navigation)")
  97. }
  98. func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
  99. DDLogDebug("didCommit")
  100. }
  101. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  102. DDLogDebug("didFinish")
  103. //self.setupData()
  104. }
  105. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  106. DDLogDebug("didFail")
  107. DDLogError(error.localizedDescription)
  108. }
  109. }