5

我正在尝试使用这种技术的混合嵌入一个 Youtube 视频,以及这个 Youtube SDK 博客文章在一个通用应用程序中。iPhone 版本,使用相同的代码,工作正常。在 iPad 上,视频确实嵌入了,并且它以嵌入的形式播放良好,但是一旦您点击全屏按钮,应用程序就会崩溃(按钮没有响应,设备没有旋转)。Youtube 视频中的音乐一直在播放。

没有记录错误消息,但应用程序确实注册为“暂停”或在 xCode 中挂起。com.apple.libdispatch-manager 每次崩溃时都在线程 2 上。问我问题,我会给你有关错误的更多信息,但我不知道从哪里开始。

我试过了:

  • 改变 UIWebView 框架的大小
  • UIWebView 在 UIScrollView 中,但是如果我将它从滚动视图中取出并将其添加到视图中,问题是相同的。
  • 改变视频
  • 将我在 UIWebView 中使用的 html 从this更改为this,但没有结果
  • 将 youtube 链接的格式从 ?v=uniqueID 更改为 /v/uniqueID
  • 检查呈现视图是 rootviewcontroller(它是,但视频嵌入在模态中,这不是 rootviewcontroller)。

我正在为 iOS 5.1 构建,如果在 iOS6 上运行,则不会发生这种情况

嵌入视频的视图在手机和 iPad 上都是模态的。应用程序中没有发生黑客或不寻常的事情。

似乎有人在谈论 Evernote 的应用程序有类似的问题,但我不知道它是否相关。

供您参考,这里是 YouTubeView 子类(UIWebView 的子类):

- (YouTubeView *)initWithStringAsURL:(NSString *)urlString frame:(CGRect)frame;
{
    if (self = [super init]) 
    {
        // Create webview with requested frame size
        self = [[YouTubeView alloc] initWithFrame:frame];

// HTML to embed YouTube video
//      NSString *youTubeVideoHTML = @"<html><head>
//                                       <body style=\"margin:0\">
//                                         <embed id=\"yt\" src=\"%@\"
//                                                type=\"application/x-shockwave-flash\"
//                                                width=\"%0.0f\" height=\"%0.0f\">
//                                         </embed>
//                                       </body>
//                                     </html>";

        NSString *youTubeVideoHTML = @"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = %0.0f\"/></head><body style=\"background:#FFF;margin-top:0px;margin-left:0px\"><div><object width=\"%0.0f\" height=\"%0.0f\"><param name=\"movie\" value=\"%@\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"%@\"type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"%0.0f\" height=\"%0.0f\"></embed></object></div></body></html>";

        // Populate HTML with the URL and requested frame size
//      NSString *html = [NSString stringWithFormat:youTubeVideoHTML, urlString, frame.size.width, frame.size.height];

        NSLog(@"html:\n %@", youTubeVideoHTML);

        NSString *html = [NSString stringWithFormat:youTubeVideoHTML, frame.size.width, frame.size.width, frame.size.height, urlString, urlString, frame.size.width, frame.size.height];

        NSLog(@"html:\n %@", html);

        // Load the html into the webview
        [self loadHTMLString:html baseURL:nil];
    }

    return self;
}
4

1 回答 1

2

iOS 5.0 和 iOS 5.1 上的模态视图是导致全屏视频崩溃的问题,AFAIK。他们只是改变了那个版本的 iOS (parentViewControllerpresentingViewController) 中的视图层次结构,这就是后果。我很久以前在这里问过这个问题,这里还有一个相同的问题但仍然没有人知道该怎么做。

首先,他们在 6.0 中修复了它,我想,这很好。

对于 5.1,我们稍微改变了设计并避免了模态视图。这样做,如果在你的情况下是可能的。

于 2012-09-26T20:11:30.233 回答