iOS - Onboarding设置导致JWPlayer fullScreen按钮加载初始视图控制器

时间:2017-07-03 01:40:40

标签: ios swift video jwplayer screen-rotation

我有一个带有三个标签的标签栏应用程序(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
}

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

我尝试了很多东西,例如一次删除一个代码块,监视viewDidDisappear,viewWillDisappear(用于视频屏幕),当手机旋转到肖像时,都没有触发。我还监控了初始标签是否以某种方式被选中,但情况也不是这样。

只有当我从app delegate中删除了新手代码时,视频播放器才能正常工作。

入门代码中是否有任何内容可以让视频播放器在退出fullScreen时显示initialViewController?我可以用不同的方式编写入职代码吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这就是我所做的。我必须使用自己的ViewController将入门屏幕视为其他任何屏幕。然后在ViewController里面我写道:

$objResp=json_decode($response, true);

不幸的是,别无他法。