Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 嵌入UIWebView中的Youtube在进入全屏时会导致iPad崩溃_Objective C_Ios_Ipad_Youtube_Freeze - Fatal编程技术网

Objective c 嵌入UIWebView中的Youtube在进入全屏时会导致iPad崩溃

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

我正在尝试将Youtube视频嵌入到一个通用应用程序中。iPhone版本使用相同的代码,工作正常。 在iPad上,视频确实嵌入了,并且以嵌入的形式播放得很好,但只要你点击全屏按钮,应用程序就会崩溃(按钮没有响应,设备就不会旋转)。Youtube视频中的音乐一直在播放

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

我试过:

  • 更改UIWebView框架的大小
  • UIWebView位于UIScrollView中,但如果我将其从scrollview中取出并添加到视图中,问题是相同的
  • 更改视频
  • 将我在UIWebView中使用的html从更改为,没有结果
  • 将youtube链接的格式从?v=uniqueID更改为/v/uniqueID
  • 检查显示视图的是rootviewcontroller(它是,但视频嵌入在一个模式中,而不是rootviewcontroller)
我正在为iOS 5.1构建,如果在iOS 6上运行,这不会发生

无论是在手机还是iPad上,视频嵌入的视图都是模态的。应用程序中没有发生黑客行为或异常情况

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

以下是YouTubeView子类(UIWebView的哪些子类),供您参考:

-(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;
}