2010-01-23 2 views
2

J'ai une vue de texte, qui a des liens vers des pages Web, comme Wikipedia. Habituellement, quand je clique sur les liens, il ferme mon application et ouvre Safari.Comment ouvrir des liens dans un WebView plutôt que dans Safari?

Comment contrôler le lien hypertexte, afin qu'il charge la page Web dans le UIWebView au lieu de Safari?

Mettre un bouton sur le lien n'est pas ce que je veux, car il s'agit d'une vue de texte défilable.

Y a-t-il un Void que je peux appeler, car j'ai également besoin de commencer à afficher la vue Web lorsque le lien est cliqué.

Merci. Toutes les réponses seraient appréciées.

(je suis à programmer pour l'iPhone d'apprentissage de 12 ans. Voir Spaceulator ou visitez timh.me.uk pour ma première application)

Répondre

2

Vous pouvez enregistrer votre application en tant que gestionnaire d'URL pour certains schémas d'URL, par exemple "nttp". Ajouter les lignes suivantes dans votre fichier Info.plist:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>com.test.nttp</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>nttp</string> 
     </array> 
    </dict> 
</array> 

Lorsque vous écrivez le contenu de votre mode texte utiliser le schéma d'URL « de nttp » au lieu de « http » ("nttp: //www.stackoverflow .com/"au lieu de" http://www.stackoverflow.com/ ").

Mettre en oeuvre l'application : handleOpenURL: méthode dans votre délégué app:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

NSString *aUrl = [url absoluteString]; 

// Use the URL 

return YES; } 

Par exemple, vous pouvez remplacer le "nttp" par "http" et initié une vue web avec elle ...

Espérons que cette solution est assez bonne ...

+0

Merci Michael. Le lien nttp: //www.stackoverflow.com (ou toute autre URL avec nttp) est maintenant bleu, et agit comme un lien hypertexte, mais quand il est cliqué, il ne fait rien. Je l'ai essayé dans le délégué de l'application et le contrôleur de vue (où tout mon code est), mais il n'est pas appelé. Voici le code que j'ai mis en: - Application (BOOL): (UIApplication *) application handleOpenURL: (NSURL *) url { \t \t NSString * aUrl = [url absoluteString]; \t \t // Charger la requête dans UIWebView. \t [webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: aUrl]]]; \t \t // Utiliser l'URL \t \t return YES; } – philh

1

ce AFAIK est impossible avec un UITextView.

Mais vous pouvez afficher le texte dans un UIWebView à la place (après la conversion au format HTML), de sorte que vous êtes dans un UIWebView depuis le début.