обнаружение URL веб-просмотра покинуло приложение iPhone - PullRequest
0 голосов
/ 10 августа 2011

я открываю URL-адрес в веб-представлении и во время загрузки показываю счетчик в виде предупреждений.

Если при нажатии на URL-адрес открывается внутреннее приложение, такое как iTunes, как я могу определить, что веб-представление покинуло мое приложение?так что, когда пользователь возвращает диалоговое окно было закрыто.

Я использовал didFailLoadWithError, и это не сработало?

Есть идеи?

Спасибо, Дэн

ИСПРАВЛЕНО - я забыл установить делегата Doh!

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Вы можете использовать applicationWillResignActive, чтобы определить, когда приложение переходит в неактивное состояние.Он указывается в делегате вашего приложения:

- (void)applicationWillResignActive:(UIApplication *)application {
    //close your UIWebView here
}

Если вы не можете получить доступ к UIWebView от делегата, вы можете зарегистрироваться для получения уведомления UIApplicationDidEnterBackgroundNotification от вашего UIViewController.Убедитесь, что вы отменили регистрацию в какой-то момент.

//register
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeWebView) name:UIApplicationDidEnterBackgroundNotification object:nil];

//un-register
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
1 голос
/ 10 августа 2011

Метод UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType: спросит делегата вашего веб-просмотра, разрешено ли открывать каждый URL-адрес, прежде чем пытаться его открыть.Вы можете проверить тип URL в этом методе и вернуть НЕТ, если это не http или https, а затем представить предупреждение для пользователя и позволить ему выбрать, хотят ли они открыть его или остаться в вашем приложении, или просто зарегистрировать, что приложение было оставлено наоткройте еще один и верните ДА;

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *urlString = [NSString stringWithFormat:@"%@", request.URL];
    NSArray *urlComponents = [urlString componentsSeparatedByString:@"://"];
    NSString *urlType = [urlComponents objectAtIndex:0];
    if ([urlType isEqualToString:@"http"] || [urlType isEqualToString:@"https"]) {
        // present an alert or do whatever you want with this url...
        return NO;
    }
    return YES;
}
1 голос
/ 10 августа 2011

Прежде всего, использование представления предупреждений для отображения хода загрузки в веб-представлении, вероятно, является плохой идеей, поскольку оно блокирует все взаимодействие с пользователем до тех пор, пока не завершится загрузка.

У вас уже есть код, который позволяет веб-представлению обрабатывать определенные URL-адреса со встроенными приложениями, такими как iTunes (он не делает это самостоятельно), поэтому я предполагаю, что при использовании [[UIApplication sharedApplication] openURL:...] для открытия внешний URL, вы также можете легко спрятать спиннер там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...