2013-10-31 15 views
14

W aplikacji, z którą mam kontrakt, przygotowuję listę filmów z YouTube i zezwalam na ich wyświetlanie w aplikacji. Jednak, gdy użytkownik kliknie komórkę w kontroler nawigacyjny widoku YouTube i pojawi się widok modalny z UIWebView, interfejs UIWebView zwraca błąd "Przerwanie ładowania ramki".Jak rozwiązać problem "Przerwany ładunek ramek" w interfejsie UIWebView?

Przepuściłem go przez debugger dziesiątki razy i wszystko wydaje się dobrze, dopóki nie zainicjuję NSURLRequest. Gdy zostanie wyświetlony widok modalne, tutaj jest kod, który uruchamia się w ViewController za -viewDidLoad metody:

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

Kiedy jednak podciągnąć debugger na linii [_webView loadRequest:request];, widzę następujące:

enter image description here

Czy ktoś wie, dlaczego UIWebView zwraca błąd?

+0

Może zajść potrzeba sprawdzenia właściwości didFailWithError delegata UIWebView i sprawdzenia domeny i numeru błędu, zobacz, czy to daje więcej informacji. – cynistersix

+1

Czy to pusta strona? – NeverHopeless

+0

Ostatnia odpowiedź na temat przekierowania do m.youtube wydaje się obiecująca. Też znalazłem to: http://stackoverflow.com/questions/19959307/the-joys-of-didfailloadwitherror-uiwebview. A jeśli plik był lokalny i żądanie musi zostać utworzone przy użyciu UIWebView loadData: – cynistersix

Odpowiedz

1

Adres URL, którego używasz, prawdopodobnie nie rozpoznaje programu użytkownika. To był problem, który wystąpił w starszych wersjach systemu iOS też, ale wydaje się, że wrócił w iOS 7. Spróbuj dodać to do 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]; 
+0

Bez powodzenia, wciąż otrzymuję komunikat "Frame load interrupted". – amarkon

+0

Naprawiono problem podczas próby załadowania Facebooka. Dla mnie niezbędnymi częściami były 'Mozilla/5.0 AppleWebKit/534.46' – BananaNeil

3

Mam ten sam problem, w moim przypadku okazało się, że nie jest prawidłowo ustawiony MIMEType.

że testowane poprzez ręczne utworzenie NSURLConnection z żądanie zawartości, a następnie wprowadzone:

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

obserwować zwrotnego reakcji z połączeniem. Odpowiedź: MIMEType okazała się być "pdf/pdf" zamiast "application/pdf," i wkrótce po naprawieniu tego problemu przeglądarka załadowała adres URL w porządku.

Mam nadzieję, że to pomoże.

-13

Jest całkiem jasne .. nie ustawiasz "ramki" WebView. Użyj tego:

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

To nie znaczy, że to oznacza. Mówi o ramce internetowej (koncepcji WebKit), a nie o ramce UIView. – AriX

+0

Tak, oczywiście, wiem o tym. Te same błędy wystąpiły, gdy nie ustawiono rzeczywistej właściwości ramki CGRect dla WebView. Radziłbym najpierw ją ustawić, a potem wypróbować, jeśli w ogóle ma sens. – rishabh

0

Powodem obciążenie rama przerwany błąd jest wyświetlany jest www.youtube.com wykonuje przekierowanie do m.youtube.com, który UIWebView nie lubi. W celu szalonych spekulacji, powołuję się na możliwe implikacje dla bezpieczeństwa? Byłem w stanie rozwiązać ten problem, łącząc się bezpośrednio ze stroną mobilną, eliminując potrzebę przekierowania youtube.

0

Czy robiłeś to na symulatorze lub na rzeczywistym urządzeniu? Miałem ten sam problem na sim, ale zadziałało to na urządzeniu :)

0

Napotkałem ten sam problem na iOS 10.2.1 UIWebView.

gdy plik pdf wniosek ze ścieżką URL

plik pdf ma mimeType "application/x-pdf".

więc zmieniłem na „application/pdf” i może przeczytać ten

0

miałem podobny problem dla tych, którzy poinformował, że dodanie lub skorygowanie typu MIME Naprawiono problem. W moim przypadku próbowałem otworzyć plik lokalny bez rozszerzenia pliku (np. "My-dir/my-file"), co spowodowało błąd "Frame Load Interrupted" (wraz z "Unbalanced calls to begin/end appearance transitions for UIViewController"). Dodanie rozszerzenia pliku (np. "My-dir/my-file.pdf") naprawiło problem dla mnie.

Powiązane problemy