123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- //
- // CommunityMyInvitationViewController.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/6/20.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import WebKit
- import SwiftyJSON
- import SwiftyMediator
- import Kingfisher
- class H5CommonViewController: BaseJSWebBaseViewController {
-
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- //KingfisherManager.shared.cache.clearDiskCache()
- KingfisherManager.shared.cache.clearMemoryCache()
- }
-
- deinit {
- NXLLog("deinit")
- if observe != nil {
- NotificationCenter.default.removeObserver(observe!)
- }
- }
- weak var observe : NSObjectProtocol?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- setupViews()
- setupData()
- }
-
- //MARK: - view
- override func setupViews() {
- super.setupViews()
- self.wkWebView.navigationDelegate = self
- self.wkWebView.scrollView.delegate = self
-
- }
- /// 加载数据
- override func setupData() {
- super.setupData()
-
- WebViewJavascriptBridgeManager.shared.callHandlerH5(bridge: bridge)
- observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("WVJBRefresh"), object: nil, queue: OperationQueue.main, using: {
- [weak self] (notification) in
- let refreshModelType = notification.object as? WVJBRefreshModelType
- WebViewJavascriptBridgeManager.shared.callHandlerH5Refresh(bridge: self?.bridge, refreshModelType: refreshModelType)
- })
- WebViewJavascriptBridgeManager.shared.registerHandlerApp(bridge: bridge) {
- [weak self] (wvjbModel) in
- WebViewJavascriptBridgeManager.shared.jump(wvjbModel: wvjbModel,viewController: self)
- }
-
- navigationBar.onClickLeftButton = {
- [weak self] in
- self?.wkWebView.stopLoading()
- if (self?.wkWebView.canGoBack)! {
- self?.goBack()
- }else {
- NotificationCenter.default.post(name: NSNotification.Name("CommunityModulePlanetTop"), object: 1)
- self?.navigationController?.popViewController(animated: true)
- }
- }
-
- }
-
- }
- extension H5CommonViewController : UIScrollViewDelegate {
- // func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
- //
- // return false
- // }
- }
- extension H5CommonViewController : WKNavigationDelegate {
-
- //服务器开始请求的时候调用
- func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
-
- let navigationURL = navigationAction.request.url?.absoluteString
- if let requestURL = navigationURL?.removingPercentEncoding {
- //拨打电话
- //兼容安卓的服务器写法:<a class = "mobile" href = "tel://电话号码"></a>
- //或者:<a class = "mobile" href = "tel:电话号码"></a>
- if requestURL.hasPrefix("tel://") {
- //取消WKWebView 打电话请求
- decisionHandler(.cancel);
- //用openURL 这个API打电话
- if let mobileURL:URL = URL(string: requestURL) {
- if #available(iOS 10, *) {
- UIApplication.shared.open(mobileURL, options: [:], completionHandler: nil)
- } else {
- UIApplication.shared.openURL(mobileURL)
- }
- }
- }
-
- }
- switch navigationAction.navigationType {
- case WKNavigationType.linkActivated:
- pushCurrentSnapshotView(navigationAction.request as NSURLRequest)
- break
- case WKNavigationType.formSubmitted:
- pushCurrentSnapshotView(navigationAction.request as NSURLRequest)
- break
- case WKNavigationType.backForward:
- break
- case WKNavigationType.reload:
- break
- case WKNavigationType.formResubmitted:
- break
- case WKNavigationType.other:
- pushCurrentSnapshotView(navigationAction.request as NSURLRequest)
- break
- @unknown default:
- break
- }
- decisionHandler(.allow)
- }
-
- //开始加载
- func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
-
- }
-
- //这个是网页加载完成,导航的变化
- func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
- }
-
- //跳转失败的时候调用
- func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
- NXLLog(error)
- }
- // 内容加载失败时候调用
- func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
- progressView.isHidden = true
- }
-
- // 打开新窗口委托
- func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
- if navigationAction.targetFrame?.isMainFrame == nil {
- webView.load(navigationAction.request)
- }
- return nil
- }
-
- }
|