Objective c 嵌入UIWebView中的Youtube在进入全屏时会导致iPad崩溃
我正在尝试将Youtube视频嵌入到一个通用应用程序中。iPhone版本使用相同的代码,工作正常。 在iPad上,视频确实嵌入了,并且以嵌入的形式播放得很好,但只要你点击全屏按钮,应用程序就会崩溃(按钮没有响应,设备就不会旋转)。Youtube视频中的音乐一直在播放 没有记录任何错误消息,但应用程序在xCode中注册为“暂停”或挂起。每次崩溃com.apple.libdispatch-manager都在线程2上。问我问题,我会给你更多关于错误的信息,但我不知道从哪里开始 我试过:Objective c 嵌入UIWebView中的Youtube在进入全屏时会导致iPad崩溃,objective-c,ios,ipad,youtube,freeze,Objective C,Ios,Ipad,Youtube,Freeze,我正在尝试将Youtube视频嵌入到一个通用应用程序中。iPhone版本使用相同的代码,工作正常。 在iPad上,视频确实嵌入了,并且以嵌入的形式播放得很好,但只要你点击全屏按钮,应用程序就会崩溃(按钮没有响应,设备就不会旋转)。Youtube视频中的音乐一直在播放 没有记录任何错误消息,但应用程序在xCode中注册为“暂停”或挂起。每次崩溃com.apple.libdispatch-manager都在线程2上。问我问题,我会给你更多关于错误的信息,但我不知道从哪里开始 我试过: 更改UIWe
- 更改UIWebView框架的大小
- UIWebView位于UIScrollView中,但如果我将其从scrollview中取出并添加到视图中,问题是相同的
- 更改视频
- 将我在UIWebView中使用的html从更改为,没有结果
- 将youtube链接的格式从?v=uniqueID更改为/v/uniqueID
- 检查显示视图的是rootviewcontroller(它是,但视频嵌入在一个模式中,而不是rootviewcontroller)
-(YouTubeView*)initWithStringAsURL:(NSString*)urlString frame:(CGRect)frame;
{
if(self=[super init])
{
//使用请求的帧大小创建webview
self=[[YouTubeView alloc]initWithFrame:frame];
//HTML嵌入YouTube视频
//NSString*youTubeVideoHTML=@”
//
//
//
//
// ";
NSString*youTubeVideoHTML=@;
//使用URL和请求的帧大小填充HTML
//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);
//将html加载到webview中
[self-loadHTMLString:HtmlBaseURL:nil];
}
回归自我;
}
iOS 5.0和iOS 5.1上的模式视图是导致全屏视频崩溃的问题,AFAIK。他们只是改变了iOS版本中视图的层次结构(parentViewController
和presentingViewController
),这就是后果。我很久以前问过这个问题,还有一个同样的问题是,仍然没有人知道该怎么办
首先,他们在6.0中修复了它,我想,这很好
对于5.1,我们稍微改变了设计,避免了模态视图。如果您的情况允许,请这样做。请添加详细信息,说明这是在模拟器还是在设备上发生的,以及在哪个系统版本上发生的。我无法在模拟器中模拟它,因为youtube视频没有嵌入模拟器中。这个问题在我的两台设备上都可以重复,一台是原装iPad,另一台是运行5.1.1的iPad2。我没有其他的iPad可以测试,好吧。我不知道这个模拟器!对不起,我可能帮不了什么忙;我只是想确保这不仅仅是模拟器中的一个问题。@fzwo都很好,在我尝试这样做之前我也没有。谢谢你阅读问题。你解决问题了吗?我也有同样的问题。在这个阶段,什么都可以
- (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;
}