2009-10-12 8 views
1

Je rencontre des problèmes pour intercepter les clics d'URL dans un UIWebView. J'ai lu et trouvé le problème le plus commun est que les liens ont un attribut target = "_ blank" pour ouvrir dans une nouvelle fenêtre, mais les miens n'ont pas un tel attribut. Les URL sont de la forme "/ mot", où mot est un mot arbitraire. Je les code aussi avec% 20 si nécessaire. Ma classe UIWebViewDelegate ne reçoit même pas un événement shouldStartLoadWithRequest: rien ne se passe. J'ai également essayé d'insérer un bouton dans le HTML, et ceux-ci ne répondent pas non plus.UIWebView non réactif

Existe-t-il d'autres règles régissant les URL reconnues par UIWebView? J'ai essayé d'employer une URL absolue (et même juste "http://www.google.com"), et en remplaçant également la chaîne entière de HTML avec juste un lien valide à google, mais tout en vain. Et la chose vraiment étrange est que je peux trouver un lien qui fonctionnera - il peut être cliqué et j'attrape avec succès l'événement, mais il semble (j'ai regardé assez dur) pour être rien différent entre le HTML contenant ce lien et le autres. Étant donné que je suis nouveau sur la plate-forme iPhone, je me dis que je peux très bien faire quelque chose de plus fondamentalement faux. Le flux à travers l'application ressemble à ceci: la vue principale est un UITableViewController, qui permet aux utilisateurs de sélectionner à partir d'une liste de mots. Lorsqu'un mot est sélectionné, un nouveau UIViewController est créé et poussé sur l'écran. C'est la vue avec un UIWebView, qui affiche les données chargées à partir d'une base de données SQLite. Certains bits de code pertinents sont ci-dessous.

//move from the UITableViewController to UIViewController with UIWebView 
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil]; 
... 
[self.navigationController pushViewController:viewController animated:YES]; 

//load HTML and display it in a UIWebView 
NSString *output = [NSString stringWithFormat:@"%@%@%@",header,definition,footer]; 
[definitionView loadHTMLString:output baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Toute aide serait grandement appréciée - en me tirant les cheveux pendant un moment avec celui-ci.

+0

Avez-vous essayé d'utiliser un autre baseURL? Comme une fausse URL http: //, par exemple? –

Répondre

0

Vous devriez jeter un oeil à PhoneGap: http://phonegap.com/

PhoneGap exactement ce que fait (essentiellement c'est un grand UIWebViewDelegate géant qui permet d'écrire des applications JavaScript pour l'iPhone qui sont en mesure de profiter de la caméra, GPS , accéléromètre, etc.). Téléchargez la source, ouvrez PhoneGap.xcodeproj dans le dossier 'iphone' et jetez un oeil à la classe PhoneGapDelegate. C'est un bon exemple d'utilisation de UIWebViewDelegate, difficile de trouver un meilleur exemple :) Et cela fonctionne bien sûr.