2

我遇到了一个奇怪的问题,我需要帮助解决。我的应用程序始终以纵向模式运行 - 我明确希望它是这样的。在应用程序的一个地方,我有一个 UIWebView,它工作得很好,正如预期的那样。此 Web 视图并非一直显示,而是动态添加到主视图并根据用户操作删除(即它仅在我需要时可见)。

现在,有时在这个视图中我可能有一个 youtube 视频。WebView 仅包含<iframe>youtube 嵌入。当用户单击 webview 中的视频预览框时,会启动一个全屏视频查看器来播放视频 - 这很好。

但是,如果在播放过程中用户旋转手机,则旋转全屏视频播放器并以横向模式播放视频。现在视频停止并且用户按下“完成”按钮而不将手机旋转回纵向模式,视频播放器关闭并且用户返回到我的应用程序 - 但是现在我的布局也旋转了!不仅仅是视频视图,还有整个布局——带有工具栏、导航控制器等。

我不想要任何旋转!我只希望我的应用程序中的所有内容都保持纵向模式!此外,现在即使手机旋转回纵向,应用程序也会保持横向模式。

请注意,到目前为止,我只在模拟器中对此进行了测试,因为我目前没有要测试的实体手机。我创建了一个简单的(质量很差!)视频(只是用旧手机摄像头在我的屏幕上拍摄了模拟器)来演示这个问题 - 视频在这里:http ://shchuka.com/hosting/rotation_problem.mp4

有什么想法我能做些什么吗?

4

2 回答 2

0

添加或更改它:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (UIInterfaceOrientation == UIInterfaceOrientationPortrait);

}

这将阻止所有旋转,并且该应用程序只能在纵向模式下运行。您可以将return语句放在 IF 语句中,以便在某些情况下进行轮换。

于 2012-04-13T17:00:33.330 回答
0

当我希望 appDelegate 窗口高于其他所有视图时,我有时会向它们添加视图,并且令人讨厌的副作用是我必须显式调用我自己的旋转代码,因为没有 VC 来处理它。从好的方面来说,这可能意味着它可能非常适合您的需求 -

[[[[UIApplication sharedApplication] delegate] window] addSubview:myWebView];

...根据您的应用程序的方向等,在您首先加载视图之前,您可能需要在显示它之前旋转 webView。

于 2012-04-14T07:19:26.440 回答