UIWebView и таймауты - PullRequest
       17

UIWebView и таймауты

7 голосов
/ 26 апреля 2011

Я использую UIWebView для отображения некоторого контента. В этом контенте пользователь может перемещаться по множеству сайтов, которые загружаются с использованием AJAX. Один шаг на этом сайте требует довольно много времени. Поскольку я не нашел ничего о timeoue для UIWebView, я попытался установить его на начальный NSURLRequest, который он загружает.

К сожалению, это, похоже, ничего не делает. Я не совсем уверен, должен ли я сам устанавливать тайм-аут? Я что-то пропустил? UIWebView отменяет мой тайм-аут? Я немного запутался в этом, поэтому любая помощь будет оценена. :)

Лучший
-f

Обновление

Я создал тестовый проект, чтобы проверить свою «теорию» о том, как UIWebView работает с таймаутами. Вот настройки:

  • PHP-файл с именем sleep.php, в котором есть параметр, с помощью которого я могу настроить время до тех пор, пока он не отправит результат
  • маленький проект Xcode с одним представлением, который представляет собой веб-представление, которое загружает sleep.php следующим образом:

    NSURLRequest * request = [NSURLRequest requestWithURL: url cachePolicy: NSURLCacheStorageAllowed timeoutInterval: 10]; [webView loadRequest: запрос];

Итак, играя с параметром секунд, я мог видеть, что UIWebView работает как надо. Я получаю webViewDidFinishLoad: или webView:didFailLoadWithError: в зависимости от времени ожидания.

После проверки того, что timeoutInterval работает так, как объявлено, я ввел proxy.php (который имеет две ссылки на sleep.php, настроенный на 5 и 15 секунд), чтобы проверить, действительна ли моя конфигурация запроса для новых запросов. Я изменил начальный NSURLRequest, чтобы использовать proxy.php, но оставил 10-секундную конфигурацию для тайм-аута.

Когда я запускаю приложение, теперь отображаются две ссылки. Когда я нажимаю первый, он загружается, как и ожидалось, через 5 секунд. К сожалению, вторая ссылка также загружается через 15 секунд.

Итак, моей первой попыткой перенастроить NSURLRequest было бы изменить его на webView:shouldStartLoadWithRequest:navigationType:. К сожалению, снова веб-сервис работает с AJAX, поэтому метод делегата не вызывается.

Есть еще предложения? Есть ли способ глобально настроить значение времени ожидания для всего UIWebView?

Лучший
-f

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Возможно, вас заинтересует просмотр делегата UIWebView webViewDidFinishLoading с вашим собственным NSTimer.

Также, если у вас возникла проблема, пока сервер не получил ответ, вы можете установить время ожидания для NSURLConnection на requestWithURL:cachePolicy:timeoutInterval:

0 голосов
/ 23 июня 2011

Я понял, что UIWebView не использует один и тот же NSURLRequest снова и снова.Поэтому мой ответ будет таким: невозможно глобально настроить время ожидания для UIWebView.

.
...