Как разрешить "Ошибка загрузки кадров" в UIWebView?

В приложении, к которому я подключен, я собираю список видеороликов YouTube и позволяю их отображать в приложении. Однако, когда пользователь удаляет ячейку в навигаторе навигации YouTube и появляется модальный вид с помощью UIWebView, UIWebView возвращает ошибку "Прерванная загрузка кадра".

Я запускаю его через отладчик десятки раз, и все, кажется, идет хорошо, пока я не инициализирую NSURLRequest. Когда отображается модальное представление, вот код, который выполняется в методе ViewController -viewDidLoad:

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

Однако, когда я вытягиваю отладчик в строке [_webView loadRequest:request];, я вижу следующее:

enter image description here

Кто-нибудь знает, почему UIWebView возвращает ошибку?

Ответы

Ответ 1

Вы должны проверить путь URL-адреса Это должно быть @ "http://google.com" вместо @ "google.com"

Ответ 2

У меня такая же проблема, в моем случае оказывается, что MIMEType не устанавливается должным образом.

Я проверил вручную, создав NSURLConnection с запросом из URL-адреса, а затем реализовал:

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

чтобы наблюдать обратный вызов ответа от соединения. Ответ MIMEType оказался "pdf/pdf" вместо "application/pdf,", и, как только я исправлю эту проблему, веб-просмотр загрузил URL-адрес просто отлично.

Надеюсь, что это поможет.

Ответ 3

Используемый вами 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];

Ответ 5

Причина, по которой отображается ошибка с загрузкой кадра, заключается в том, что www.youtube.com выполняет перенаправление на m.youtube.com, что не нравится UIWebView. Чтобы дико спекулировать, я бы привел возможные последствия для безопасности? Я смог решить эту проблему, связавшись непосредственно с мобильным сайтом, удалив необходимость перенаправления youtube.

Ответ 6

Вы делали это на симуляторе или на самом устройстве? У меня была такая же проблема на сим, но она работала на устройстве:)

Ответ 7

Я столкнулся с такой же проблемой в iOS 10.2.1 UIWebView.

при запросе pdf файла с URL-адресом пути

PDF файл имеет MIMEType "application/x-pdf".

поэтому я перешел на "application/pdf" и могу прочитать это

Ответ 8

У меня была аналогичная проблема с теми, кто сообщил, что добавление или исправление типа mime устранили проблему. В моем случае я пытался открыть локальный файл без расширения файла (например, "my-dir/my-file" ), и это привело к ужасной ошибке "Frame Load Interrupted" (вместе с "Unbalanced calls to begin/end appearance transitions for UIViewController"). Добавление расширения файла (например, "my-dir/my-file.pdf" ) исправило проблему для меня.

Ответ 9

Вполне понятно, что вы не устанавливаете "рамку" 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];