Actualización: desde ios10,
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction;
De ios 7y más tarde UITextView
tiene el método delegado:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange *NS_DEPRECATED_IOS(7_0, 10_0, "Use textView:shouldInteractWithURL:inRange:forInteractionType: instead");*
para interceptar los clics a los enlaces. Y esta es la mejor forma de hacerlo.
por ios 6y anteriormente, una buena manera de hacer esto es subclasificando UIApplication
y sobrescribiendo el-(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
Deberá implementar openURL:
en su delegado.
Ahora, para que la aplicación comience con su nueva subclase de UIApplication
, ubique el archivo main.m en su proyecto. En este pequeño archivo que inicia su aplicación, generalmente hay esta línea:
int retVal = UIApplicationMain(argc, argv, nil, nil);
El tercer parámetro es el nombre de la clase de su aplicación. Entonces, reemplazando esta línea por:
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
Esto funcionó para mí.