如何解决UIWebView中的“帧加载中断”错误?

在我订立的应用程序中,我拉取了一系列YouTubevideo,并允许它们显示在应用程序中。 但是,当用户点击YouTube视图的导航控制器中的单元格并显示带有UIWebView的模式视图时,UIWebView将返回错误“帧负载中断”。

我已经通过debugging器运行了几十次,并且一切似乎都很顺利,直到我初始化NSURLRequest。 当显示模态视图时,以下是在ViewController的-viewDidLoad方法中运行的代码:

 - (void)viewDidLoad { [super viewDidLoad]; _webView = [[UIWebView alloc] init]; _webView.delegate = self; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url]; [_webView loadRequest:request]; } 

但是,当我拉起debugging器的行[_webView loadRequest:request]; ,我看到以下内容:

在这里输入图像说明

有谁知道为什么UIWebView正在返回错误?

您应该检查URLpath
它应该是@“ http://google.com ”而不是@“google.com”

我有同样的问题,在我的情况下,原来是MIMEType没有正确设置。

我通过手动创build一个带URL请求的NSURLConnection进行testing,然后执行:

 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

观察来自连接的响应callback。 应答的MIMEType原来是"pdf/pdf"而不是"application/pdf,"并且我解决了这个问题后,webview加载了这个url就好了。

希望这可以帮助。

您使用的url可能无法识别用户代理。 这个问题也出现在较旧的iOS版本中,但似乎已经在iOS 7中返回。请尝试将其添加到您的appdelegate didFinishLaunchingWithOptions:

 NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; 

使用https://www.google.com或http://www.google.com

实际上https://是关键字。

正在显示帧加载中断错误的原因是www.youtube.com正在执行redirect到m.youtube.com ,这是UIWebView不喜欢的。 疯狂地推测,我会引用可能的安全影响? 我能够通过直接链接到移动网站来解决这个问题,消除了YouTuberedirect的需要。

你在模拟器或实际设备上做过这个吗? 我在SIM上有同样的问题,但它在设备上工作:)

我在iOS 10.2.1 UIWebView面临同样的问题。

当请求pathURL的pdf文件

pdf文件有MIMEType“application / x-pdf”。

所以我改成了“application / pdf”,可以阅读

我有一个类似的问题,那些报告说,添加或纠正MIMEtypes解决了这个问题。 在我的情况下,我试图打开没有文件扩展名的本地文件(例如“my-dir / my-file”),导致了可怕的"Frame Load Interrupted"错误(以及"Unbalanced calls to begin/end appearance transitions for UIViewController" )。 添加文件扩展名(例如“my-dir / my-file.pdf”)纠正了我的问题。

它很清楚..你不是设置WebView的“框架”。 用这个 :

 _webView = [[UIWebView alloc] initWithFrame:self.view.frame]; //give a proper Rect value _webView.delegate = self; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url]; [_webView loadRequest:request];