Обновление: из ios10 ,
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction;
Из ios7 и позже UITextView
имеет метод делегирования:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange *NS_DEPRECATED_IOS(7_0, 10_0, "Use textView:shouldInteractWithURL:inRange:forInteractionType: instead");*
, чтобы перехватить клики по ссылкам. И это лучший способ сделать это.
Для ios6 и ранее хорошим способом сделать это является подклассификация UIApplication
и перезапись -(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
Вам нужно будет реализовать openURL:
в вашем делегате.
Теперь, чтобы запустить приложение с вашим новым подклассом UIApplication
, найдите файл main.m в своем проекте. В этом маленьком файле, который загружает ваше приложение, обычно есть эта строка:
int retVal = UIApplicationMain(argc, argv, nil, nil);
Третий параметр - это имя класса для вашего приложения. Итак, заменив эту строку на:
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
Это сделало трюк для меня.