Подход делегата UIWebView не работает, вы правы! новый ответ:
Правильно, вам нужно пройти на один уровень глубже, чтобы поймать NSURLRequest
, идущий от UIWebView
. Блог, на который вы ссылаетесь, использует NSURLCache
, и я думаю, что это хорошая отправная точка:
Вы пытались создать подкласс NSURLCache, а затем переопределить -(NSURLCacheResponse*) cachedResponseForRequest:(NSURLRequest*) request
Если вы хотите избежать выполнения запроса, вам нужно что-то вернуть (как NSURLCachedResponse
). Например, вы можете получить изображение, которое статически определено в вашем приложении (возможно, PNG с размером 0,0).
Если вы вернете nil
, запрос будет выполнен.
Я использую этот подход, чтобы заставить UIWebView
заполняться локальным кэшем. Смотрите мой подробный ответ об этом здесь:
Как сохранить содержимое в UIWebView для более быстрой загрузки при следующем запуске?
Неправильный первый ответ: /
Добавьте себя в качестве делегата на UIWebView
(UIWebViewDelegate
).
Для каждого изображения, которое UIWebView
пытается загрузить, расцепитель вызывает следующий обратный вызов:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Просто проверьте, относится ли запрос к изображению, которое вы хотите избежать загрузки. В таком случае просто верните NO
к этому обратному вызову: изображение не будет загружено в UIWebView
.
При использовании этого подхода никаких изменений на стороне сервера не требуется.