2012-06-08 37 views
3

我在我的textview中有一个URL,当我们点击这个URL时,它会在默认的Safari中打开这个URL。我想检测这个事件。我也试过this检测点击uitextview上的nsurl

但它不适合我。任何人都可以建议我如何做到这一点。为我提供一个样本。

我的应用程序解析是UIResponder类型。

+0

这的副本http://stackoverflow.com/questions/2543967/how-to-intercept-click- on-link-in-uitextview –

+0

@NicolasManzini如果你仔细阅读我的文章,我写了什么。这不适合我。 –

+0

对不起,你是对的。顺便说一下,我认为你能做的最好的就是像我一样使用uiwebview。你会得到更简单的方法来拦截点击,你可以cusomize链接颜色 –

回答

1

看看这个GitHub上的项目:MSTextView

+0

感谢您的答复。但实际上MSTextView不是一个TextView。它的UIVIEW类型。我已经在我的应用程序中添加了textview,所以现在我不想用MSTEXTVIEW替换所有文本视图。 –

+0

好吧,那么您发布的第一个解决方案有什么问题? – Mat

+0

我在main.m文件中添加了这个,但它不工作。 int retVal = UIApplicationMain(argc,argv,@“MyApplication”,nil); 未调用openlink方法。 [游泳池释放]; return retVal; –

3

other answer按预期工作。

创建New File,选择Objective-C Class

  • 类:MyApplication
  • 子类:UIApplication

粘贴此代码在.m文件:

- (BOOL)openURL:(NSURL *)url { 
    if ([self handleOpenURL:url]) 
     return YES; 
    else 
     return [super openURL:url]; 
} 
- (BOOL)handleOpenURL:(NSURL*)url { 
    NSLog(@"my url handler"); 
    return YES; 
} 

下次打开你的main.m第三个参数

return UIApplicationMain(argc, argv, nil, NSStringFromClass([SampleAppDelegate class])); 

更改为UIApplication -subclass名

return UIApplicationMain(argc, argv, @"MyApplication", NSStringFromClass([SampleAppDelegate class])); 
+0

我已经试过了。但是当我更改main.m文件时,它显示错误和未编译的应用程序。 –

+0

我已经尝试过自己发布之前,并确保它正在工作。你是如何给自定义的'UIApplication'子类命名的? ......错误在说什么? – 2012-06-17 16:59:57

1

假设你只需要显示的链接的静态标签,我们在雨云有一个相当强大的归因标签,你可以希望检查出:

http://docs.nimbuskit.info/group___nimbus_attributed_label.html

标签使用CoreText和NSAttributedStrin g,所以它建立在核心Apple技术之上。它像UILabel一样以各种方式行事。下面是实现NIAttributedLabel委托的例子:

https://github.com/jverkoey/nimbus/blob/master/examples/attributedlabel/BasicAttributedLabel/BasicAttributedLabel/src/MashupViewController.m#L92

更多信息: http://nimbuskit.info/

+0

对不起。我不需要标签。我需要uitextview。 Bcoz我已经完成了申请,所以现在它不可能在所有地方改变。 –