Comment utiliser l'UIWebView dans Xcode de sorte que lorsqu'il télécharge des pages, il NE télécharge PAS les images (pour accélérer la page de chargement)?iPhone SDK: UIWebView pour arrêter le chargement/téléchargement des images
Répondre
UIWebView
est une pâle, pauvre petite ombre de plein WebView
de WebKit, pour lequel c'est facile. -webView:shouldStartLoadWithRequest:navigationType:
est seulement appelé pour la navigation. Il n'est pas appelé pour toutes les demandes comme WebPolicyDelegate
sur mac. Avec UIWebView
, voici comment je voudrais attaquer ce problème:
Mettre en œuvre -webView:shouldStartLoadWithRequest:navigationType:
et réglez-le pour toujours retourner NO
. Mais vous devrez également prendre la demande et générer un NSURLConnection
. Lorsque le NSURLConnection
finit d'extraire les données, vous devez rechercher les balises IMG et les modifier dans l'espace réservé souhaité. Ensuite, vous allez charger la chaîne résultante dans le UIWebView
en utilisant -loadHTMLString:baseURL:
.
Bien sûr, l'analyse du code HTML n'est pas une tâche triviale sur iPhone, et les chargeurs Javascript vont vous causer des problèmes, donc ce n'est pas une réponse parfaite, mais c'est le meilleur que je connaisse.
le délégué du UIWebView, puis intercepter l'appel:
– webView:shouldStartLoadWithRequest:navigationType:
Vérifiez les valeurs de NavigationType dans la documentation. Je crois que vous serez mieux servi en renvoyant NO
sur navigationType == UIWebViewNavigationTypeOther
.
Est-ce que cela provoque en fait le chargement plus rapide de la page? il semble que les images sont encore en cours de téléchargement, mais nous ne les fournissons pas à UIWebView.
ou est-ce que shouldStartLoadWithRequest suffit de charger le texte HTML en premier?
en expansion sur la réponse de Rob. J'ai remarqué que lorsque loadHTMLString: baseURL: et toujours renvoyant NO, ce webView: shouldStartLoadWithRequest: navigationType: continue à être appelé. (Je suppose que loadHTMLString invoque un autre shouldStartLoadWithRequest).
donc ce que je devais faire était autre entre le retour OUI/NON et moi NSScanner pour analyser le HTML et le changement src = "http: // ..." à src = ""
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (pageHasNoImages==YES)
{
pageHasNoImages=FALSE;
return YES;
}
NSString* newHtml;
NSString* oldHtml;
NSData *urlData;
NSURLResponse *response;
NSError *error;
urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
oldHtml=[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
newHtml=[self.detail scannerReplaceImg:oldHtml]; // my own function to parse HTML
newHtml=[self.detail scannerReplaceAds:newHtml]; // my own function to parse HTML
if (newHtml==nil)
{
NSLog(@"newHtml is nil");
newHtml=oldHtml;
}
[oldHtml release];
pageHasNoImages=TRUE;
[web loadHTMLString:newHtml baseURL:request.URL];
return NO;
}
- 1. iPhone SDK: UIWebView
- 2. iPhone-SDK: pushViewController ne pousse pas UIWebView?
- 3. Comment arrêter de charger le UIWebView
- 4. UIWebView affiche le site Web stocké localement (HTML, images, Javascript)
- 5. Détermination des dimensions des images dans l'iPhone SDK
- 6. iPhone sdk - nom des propriétaires?
- 7. Comment puis-je télécharger des images personnalisées dans ma barre d'onglets dans le SDK iPhone?
- 8. iPhone UIWebView Bug
- 9. iphone - UIWebView Problème
- 10. Impossible de modifier l'arrière-plan pour UIWebView dans l'iPhone SDK
- 11. Zoom par programmation, panoramique d'un UIWebView pour iPhone 2.2.1
- 12. Pourquoi UIWebView réduit-il les images?
- 13. iPhone - Fuite de mémoire - NSData dataWithContentsOfUrl & UIWebView
- 14. IPhone SDK: Utiliser Interface Builder pour lier des tableaux
- 15. iPhone-SDK: les images des éléments de la barre d'onglets ne sont pas visibles
- 16. Développement iPhone - Image SVG dans UIWebView
- 17. liste des types d'objets pour la programmation iphone sdk
- 18. iphone-sdk, le partage des données entre plusieurs vues
- 19. Sqlite3 classe de connexion pour iPhone SDK
- 20. ConnectionKit & iPhone SDK
- 21. SDK iPhone touche événement
- 22. iPhone SDK 3.0 Targetting 2.2.1 SDK
- 23. iPhone SDK: désactivation cllipping pour UIScrollView
- 24. iPhone-SDK: Comment rendre le site web au format iPhone?
- 25. Accès aux signets des cartes iphone via le SDK
- 26. contournant UIImagePicker dans iphone sdk
- 27. Boutons et icônes fournis par le système SDK pour iPhone
- 28. iPhone SDK - UITextField avec le bouton + pour les contacts
- 29. personnalisée autorotation iPhone SDK
- 30. iPhone sdk 3.0 issue
webView: shouldStartLoadWithRequest: navigationType: est appelé après le téléchargement. – Harry