Browse Source

不在首界面时 不播放视频

jsonwang 3 năm trước cách đây
mục cha
commit
db187acb1b

+ 40 - 0
MusicVideoPlus/Classes/Modules/Home/Controllers/MVHomeController.swift

@@ -439,6 +439,12 @@ extension MVHomeController {
     /// 播放指定位置的视频
     /// - Parameter page: 视频数据位置
     func playVideo(page: Int) {
+        
+        if !(UIViewController.getCurrentViewController()?.isMember(of: MVHomeController.self))! {
+            BFLog(message: "当前显示的界面不是在首界面,不进行播放")
+            return
+        }
+ 
         DispatchQueue.main.async {
             let cell: MVBannerCell? = self.viewListView.collectionView.cellForItem(at: IndexPath(row: page, section: 0)) as? MVBannerCell
             let showProtocal: String? = getUserDefaults(key: cShowProtocal) as? String
@@ -575,3 +581,37 @@ extension MVHomeController: UICollectionViewDelegate, UICollectionViewDataSource
         }
     }
 }
+
+
+extension UIViewController {
+    /// 获取当前显示的VC
+    ///
+    /// - Returns: 当前屏幕显示的VC
+    class func getCurrentViewController() -> UIViewController?{
+        // 获取当先显示的window
+        var currentWindow = UIApplication.shared.keyWindow ?? UIWindow()
+        if currentWindow.windowLevel != UIWindow.Level.normal {
+            let windowArr = UIApplication.shared.windows
+            for window in windowArr {
+                if window.windowLevel == UIWindow.Level.normal {
+                    currentWindow = window
+                    break
+                }
+            }
+        }
+        return UIViewController.getNextXController(nextController: currentWindow.rootViewController)
+    }
+    
+    private class func  getNextXController(nextController: UIViewController?) -> UIViewController? {
+        if nextController == nil {
+            return nil
+        }else if nextController?.presentedViewController != nil {
+            return UIViewController.getNextXController(nextController: nextController?.presentedViewController)
+        }else if let tabbar = nextController as? UITabBarController {
+            return UIViewController.getNextXController(nextController: tabbar.selectedViewController)
+        }else if let nav = nextController as? UINavigationController {
+            return UIViewController.getNextXController(nextController: nav.visibleViewController)
+        }
+        return nextController
+    }
+}