iphone - 如何拦截点击 UITextView 中的链接?

当用户在 UITextView 中触摸自动检测到的电话链接时,是否可以执行自定义操作。请不要建议改用 UIWebView。

请不要只是重复苹果类引用中的文字 - 当然我已经读过了。

谢谢。

最佳答案

更新:来自 ios10 ,

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction;

来自 ios7后来 UITextView 有委托(delegate)方法:

- (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

您需要在您的委托(delegate)中实现 openURL:

现在,要让应用程序从 UIApplication 的新子类开始,请在项目中找到文件 main.m。在这个引导您的应用程序的小文件中,通常有这一行:

int retVal = UIApplicationMain(argc, argv, nil, nil);

第三个参数是您的应用程序的类名。因此,将这一行替换为:

int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);

这对我有用。

https://stackoverflow.com/questions/2543967/

相关文章:

iphone - "wait_fences: failed to receive reply: 10

iphone - 是否有记录的方法来设置 iPhone 方向?

objective-c - NSAutoreleasePool 自动释放池是如何工作的?

objective-c - 从 NSString 中删除字符?

objective-c - 容器 View Controller 示例

objective-c - 如何获取 Root View Controller ?

ios - 横向模式下的 iPhone 应用程序,2008 系统

ios - TabBar 图像的大小应该是多少?

objective-c - 使用 NSPredicate 根据 NSDictionary 键过滤 N

iphone - Xcode 调试器 : view value of variable