BBSSubjectDetailViewController.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. }
  36. func createButton(){
  37. let width = SCREEN_WIDTH
  38. let height = SCREEN_HEIGHT
  39. self.button = UIButton(frame: CGRect(x: 0,y: 0,width: 40,height: 40))
  40. self.button?.setImage(UIImage(named: "icon_bbs_reply_white"), for: UIControl.State())
  41. self.button?.addTarget(self, action: #selector(replyAction), for: .touchUpInside)
  42. self.window = UIWindow(frame: CGRect(x: width - 60, y: height - 60, width: 40, height: 40))
  43. self.window?.windowLevel = UIWindow.Level.alert + 1
  44. self.window?.backgroundColor = UIColor.green
  45. self.window?.layer.cornerRadius = 20
  46. self.window?.layer.masksToBounds = true
  47. self.window?.addSubview(self.button!)
  48. self.window?.makeKeyAndVisible()
  49. }
  50. func replyAction(sender:Any?){
  51. self.performSegue(withIdentifier:"showReplyActionSegue", sender: nil)
  52. }
  53. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  54. if segue.identifier == "showReplyActionSegue" {
  55. let navVC = segue.destination as! ZLNavigationController
  56. let destVC = navVC.topViewController as! BBSReplySubjectViewController
  57. destVC.subject = self.subject
  58. if let parentId = sender {
  59. destVC.parentId = parentId as? String
  60. }
  61. }
  62. }
  63. override func theWebView(){
  64. super.theWebView()
  65. webView.navigationDelegate = self
  66. webView.uiDelegate = self
  67. //self.view.insertSubview(webView, belowSubview: progressView)
  68. webView.allowsBackForwardNavigationGestures = true
  69. //监控进度
  70. //self.addObserver(webView, forKeyPath: "estimatedProgress", options: .new, context: nil)
  71. loadDetailSubject()
  72. }
  73. func loadDetailSubject(){
  74. webView.load(Alamofire.request(loadUrl!).request!)
  75. }
  76. @IBAction func unFromReplyBackSubject(_ segue:UIStoryboardSegue){
  77. loadDetailSubject()
  78. }
  79. override func didReceiveMemoryWarning() {
  80. super.didReceiveMemoryWarning()
  81. // Dispose of any resources that can be recreated.
  82. }
  83. override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
  84. if keyPath == "estimatedPrgress" {
  85. progressView.isHidden = webView.estimatedProgress == 1
  86. progressView.setProgress(Float(webView.estimatedProgress), animated: true)
  87. }
  88. }
  89. }
  90. extension BBSSubjectDetailViewController:WKNavigationDelegate,WKUIDelegate {
  91. func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
  92. DDLogDebug("didFailProvisionalNavigation \(navigation) error = \(error)")
  93. }
  94. func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
  95. DDLogDebug("didStartProvisionalNavigation \(navigation)")
  96. }
  97. func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
  98. DDLogDebug("didCommit")
  99. }
  100. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  101. DDLogDebug("didFinish")
  102. //self.setupData()
  103. }
  104. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  105. DDLogDebug("didFail")
  106. DDLogError(error.localizedDescription)
  107. }
  108. }