Mise à jour: De ios10,
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction;
De IOS 7et plus tard UITextView
a la méthode déléguée:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange *NS_DEPRECATED_IOS(7_0, 10_0, "Use textView:shouldInteractWithURL:inRange:forInteractionType: instead");*
pour intercepter les clics sur les liens. Et c'est la meilleure façon de le faire.
Pour ios6et plus tôt, une bonne façon de le faire est de sous UIApplication
-classer et d'écraser le-(BOOL)openURL:(NSURL *)url
@interface MyApplication : UIApplication {
}
@end
@implementation MyApplication
-(BOOL)openURL:(NSURL *)url{
if ([self.delegate openURL:url])
return YES;
else
return [super openURL:url];
}
@end
Vous devrez mettre openURL:
en œuvre dans votre délégué.
Maintenant, pour que l'application démarre avec votre nouvelle sous-classe de UIApplication
, recherchez le fichier main.m dans votre projet. Dans ce petit fichier qui démarre votre application, il y a généralement cette ligne:
int retVal = UIApplicationMain(argc, argv, nil, nil);
Le troisième paramètre est le nom de classe de votre application. Donc, en remplaçant cette ligne pour:
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
Cela a fait l'affaire pour moi.