iOS5: UIWebView не отображает Gmail после открытия некоторых файлов вложений - PullRequest
0 голосов
/ 07 ноября 2011

Есть ли какое-либо исправление / способ решения проблемы?

Резюме:

На устройствах / симуляторах iOS5 приложения с UIWebView не отображают Gmail после открытия некоторых типов файлов вложений, напримеркак .pdf, .txt или .xml.Я создаю несколько простых приложений с UIWebView, которые имеют панель поиска, кнопку goBack и так далее.Они отлично работают на устройствах / симуляторах iPhone 4.3, когда они созданы для iOS 4.3, но не на 5.0.Проекты, созданные для iOS5, также имеют те же проблемы.

Шаги для воспроизведения:

  1. Создайте приложение для iOS 4.3 или 5.0 с UIWebView, в котором есть хотя бы кнопка goBack ипанель поиска для URL.
  2. Запустите приложение на устройстве / симуляторе iOS5.
  3. Войдите в Gmail в приложении.
  4. Откройте вложение в формате pdf (txt / xml) одного из ваших сообщений электронной почты.(Эта проблема не возникает при открытии файла Microsoft Office, поддерживаемого UIWebView, например word, excel и powerpoint.)
  5. Вернитесь на предыдущую страницу, нажав кнопку goBack, или введите URL-адрес «http://mail.google.com” в строке поиска.
  6. UIWebView отображает белый пробел.
  7. После этого вы никогда не увидите свою страницу Gmail.

Ожидаемые результаты:

Вы можете вернуться к предыдущему сообщению электронной почты (при нажатии кнопки goBack) или перейти к началу страницы Gmail (при вводе URL-адреса Gmail).

Фактические результаты:

UIWebView просто показывает белый пробел и никогда не позволяет вам видеть какую-либо страницу Gmail.

Регрессия:

Происходит: - iOS Deployment Target 4.3, запускается на устройствах / симуляторах iOS 5.0 - iOSDeployment Target 5.0, работает на устройствах / симуляторах iOS 5.0

Не происходит: - iOS Deployment Target 4.3, запускается на устройствах / симуляторах iOS 4.3

Спасибо

1 Ответ

0 голосов
/ 18 ноября 2011

У меня была такая же проблема, но я не мог ее исправить. Я предлагаю вам один из обходных путей. Если ваш UIWebView переходит на «mail-attachment.googleusercontent.com», нажмите Назад действие неверно. Поэтому, когда URL-адрес обнаружен, вам лучше создать другое представление и загрузить в него вложение. Второй имеет кнопку возврата назад, однако, когда она нажата, вы отбрасываете второй вид, а затем возвращаетесь к первому виду методом IBAction. Работает на iOS4 и iOS5.

мой пример кода следующий.

-(BOOL) firstView:(UIWebView *)view
shouldStartLoadWithRequest:(NSURLRequest *)req
 navigationType:(UIWebViewNavigationType)nType{
    NSString *strurl=[[[req URL] standardizedURL] absoluteString];
    NSRange range=[strurl rangeOfString: @"mail-attachment" options:NSCaseInsensitiveSearch];
    if (range.location!=NSNotFound){
        Your2ndViewController *attView = [[Your2ndViewController alloc] initWithNibName:@"YourNibNameofAnothor" bundle:nil];
        if(attView==nil){
            return NO;
        }
        attView.wvc=self;//mark the first on the second to return the first one
            [attView loadURLWithString:strurl];
        [self.view addSubview:attView.view ];
        [UIView commitAnimations];
        [attView loadURLWithString:strurl];
        return NO;//Not Load on the first view
    }
    return YES;//Load on the first view
}

Ваш 2-й вид, который также является UIWebView, имеет кнопку возврата и его обработчик следующий

- (IBAction) returnParent:(id)sender
{
    [self.view removeFromSuperview];//return to the first view
    [UIView commitAnimations];
}
...