【问题标题】:iOS - Onboarding setup causing JWPlayer fullScreen button to load initial view controlleriOS - 引导设置导致 JWPlayer 全屏按钮加载初始视图控制器
【发布时间】:2017-07-03 01:40:40
【问题描述】:

我有一个带有三个选项卡的选项卡栏应用程序(Swift 3、Xcode 8.3)。首次启动应用程序时,代码会检查 UserDefaults 以查看是否有用户登录。如果有用户,则加载初始视图控制器(第一个选项卡)。否则,会加载一个引导屏幕供用户登录,之后他/她将进入第一个选项卡。

这是我在 AppDelegate 中使用的代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // Set up onboarding screen
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    var vc: UIViewController

    let isUserLoggedIn = UserDefaults.standard.bool(forKey: "isUserLoggedIn")
    if !isUserLoggedIn {
        vc = storyboard.instantiateViewController(withIdentifier: "onboarding")
    } else {
        vc = storyboard.instantiateInitialViewController()!
    }

    self.window?.rootViewController = vc
    self.window?.makeKeyAndVisible()

    return true
}

就其本身而言,这非常有效。问题稍后出现。任何选项卡都可以转到一个屏幕,其中我有一个适用于 iOS 的 JWPlayer 实例,它占据了屏幕的顶部三分之一。如果视频开始播放并且我将手机旋转到横向模式,视频将变为全屏(如果用户单击全屏按钮也会发生这种情况)。但是,当设备旋转回纵向时,我并没有回到顶部三分之一的视频播放器的屏幕,而是立即看到初始视图(即第一个选项卡的内容)。视频一直在后台播放,但我看不到。除非我再次将设备旋转到横向模式,否则我无法返回视频。所以,横向我看到我的原始视频,纵向我得到初始视图(第一个标签)。

我尝试了很多事情,例如一次删除一个代码块,监控viewDidDisappear,viewWillDisappear(用于视频屏幕),当手机旋转到纵向时,这些都没有触发。我还监视是否以某种方式选择了初始选项卡,但事实并非如此。

只有当我从应用代理中删除了入职代码时,视频播放器才能正常工作。

入职代码中是否有任何内容可以使视频播放器在退出全屏时显示 initialViewController?有没有其他方法可以编写入职代码?

谢谢。

【问题讨论】:

  • 嗨 cesarcarlos 我也面临同样的问题。你能帮我解决这个问题吗?我需要做什么?
  • 不幸的是,我永远无法让它工作,所以我不得不删除入职。我为入职屏幕创建了一个视图控制器,而不是在应用程序委托中进行。
  • 谢谢 cesarcarlos
  • 实际上我有一个初始视图控制器,并在其上使用 JWPlayer 呈现另一个视图控制器,并且在将横向旋转为纵向时面临关闭视图控制器的问题。

标签: ios swift video jwplayer screen-rotation


【解决方案1】:

这就是我所做的。我必须像对待任何其他屏幕一样对待入职屏幕,并使用它自己的 ViewController。然后在我写的 ViewController 里面:

override func viewDidAppear(_ animated: Bool) {
    // Check to see if user is logged in
    let isUserLoggedIn = UserDefaults.standard.bool(forKey: "isUserLoggedIn")
    if isUserLoggedIn {
        performSegue(withIdentifier: "toMainSegue", sender: self)
        return
    }
}

不幸的是,没有其他方法可以解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多