我正在尝试使用这种技术的混合嵌入一个 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;
}