2012-04-11 2 views
4

Как указано в документации ios, для остановки задачи загрузки веб-страниц следует использовать метод [webView stopLoading].Как немедленно остановить загрузку UIWebView

Насколько я понимаю, эти методы выполняются асинхронно и НЕ останавливают обработку запросов на загрузку немедленно.

Однако мне нужен метод, который заставит webview немедленно остановить текущую задачу, потому что загрузка части блокирует основной поток, что может привести к щелчкам анимации.

Итак, есть ли способ преуспеть в этом?

+0

Вы нашли решение? Я также сталкиваюсь с той же проблемой –

ответ

0

Не используйте UIWebView для непосредственного скачивания вашего html-документа. Используйте механизм загрузки async, например ASIHTTPRequest, чтобы получить ваш html, загруженный фоновым потоком. Когда вы получите requestFinished с содержимым своего html, дайте его UIWebView.

Пример из страницы ASIHTTPRequest, как создать асинхронный запрос:

- (IBAction)grabURLInBackground:(id)sender 
{ 
    NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setDelegate:self]; 
    [request startAsynchronous]; 
}   

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    // Use when fetching text data 
    NSString *responseString = [request responseString]; 
  
    // Use when fetching binary data 
    NSData *responseData = [request responseData]; 
}   

- (void)requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 
} 

Используйте responseString для параметра loadHTMLString метода вашей UIWebView в:

UIWebView *webView = [[UIWebView alloc] init]; 
[webView loadHTMLString:responseString baseURL:[NSURL URLWithString:@"Your original URL string"]]; 
+0

Я уже использую '[webView loadHTMLString: responseString baseURL: [NSURL URLWithString: @" Ваша исходная строка URL "]];' метод для загрузки webview, html-страница находится в локальной файловой системе. – manuyavuz

+0

Вы имели в виду «локальную файловую систему» ​​как устройство iOS local? Или у вас есть компьютер в вашей сети WiFi (такой же, как у вашего устройства iOS), чтобы предоставить ваш html-контент? Что делает ваш html? Это простая страница или что-то динамическое с Ajax или другой инфраструктурой на основе Java? – FeAt

+0

Html не получен из сети, он уже находится на локальном устройстве. Html содержит в себе длинный текстовый контент, и это всего лишь статический html. – manuyavuz

2

Это работает для меня.

if (webText && webText.loading){ 
    [webText stopLoading]; 
} 

webText.delegate=nil; 


NSURL *url = [NSURL URLWithString:@""]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
[webText loadRequest:requestObj]; 
+0

Это работает, чтобы немедленно остановить, но показывает пустую белую страницу. – devios1

Смежные вопросы