【问题标题】:Prevent UIWebView in full screen to rotate防止全屏 UIWebView 旋转
【发布时间】:2011-12-28 04:36:57
【问题描述】:

我有一个 UIWebView 可能会显示 YouTube 视频,所以当它发生时它会全屏显示。我的应用不旋转,但 UIWebView 旋转,所以如果我停止在横向模式下观看它,当我返回屏幕时它会发疯。

当用户点击完成或直接避免 UIWebView 旋转时,我如何监听?

谢谢!

【问题讨论】:

    标签: iphone uiwebview rotation


    【解决方案1】:

    我们经常有仅纵向的应用程序,可通过网络视图显示横向视频。

    你确定你从你的 shouldAutorotateToOrientation: 顶视图控制器的方法返回 NO 吗?当你说“发狂”时,你是什么意思?我发现的一件事是,设置主窗口的 rootViewController 属性(而不是仅仅将根视图控制器的视图添加为窗口视图的子视图)可能会在从此类视频返回时产生问题。

    【讨论】:

    • 我在 shouldAutorotate 中返回 (toInterfaceOrientation == UIInterfaceOrientationPortrait) 并且在两种情况下都会发生:如果我添加子视图或设置 rootViewController。发生的情况是,当我旋转视频时,视图也会旋转。虽然没有 viewController 有 shouldAutorotate yes 并且目标只支持纵向,但它确实如此。
    • 忘了说了,iOS5.在 iOS4 中,视频不旋转
    • 您是否在应用程序中的任何位置处理轮播通知?
    • 我刚刚在 iOS 5 设备上尝试过,它对我来说很好用。在 iOS 5 和 iOS 4 中,点击 youtube 链接以横向显示视频。点击完成后,视频滑开,纵向显示视图控制器。您是否在任何地方测试设备或状态栏方向?
    • 我开始发疯了。视频开始后,如果我旋转设备,则视图会旋转。如果我放了一个 will/didRotate,它们就不会被调用。但之后,一旦一切发生,他们就会开始接收通知。在我的应用程序中,我不允许任何旋转,它只发生在 iOS5 中,当 UIWebView 全屏显示时。
    【解决方案2】:

    我知道我迟到了几个月,但我编写了一个简单的 UINavigationController 子类来正确地将 shouldAutorotateToInterfaceOrientationwillRotateToInterfaceOrientationdidRotateFromInterfaceOrientation 调用传递给正确的视图控制器。

    希望这会有所帮助:)

    https://gist.github.com/bbae6291c4f6bf05d1eb

    【讨论】:

      【解决方案3】:

      当视频从全屏关闭时,UIViewController 中的方法 viewWillAppear: 将被调用。您可以通过在您的UIView 上调用setNeedsDisplay 来调整那里的视图

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-09
        • 2011-02-13
        • 1970-01-01
        • 2020-12-05
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        相关资源
        最近更新 更多