如何检测用户单击超链接

时间:2011-02-25 01:25:17

标签: iphone objective-c

我的应用会显示一些文字,我希望能够点击超链接。我对此功能有一些疑问。

  1. 如何解析文本以了解这是一个链接?

  2. 一旦用户点击链接,我不希望操作系统切换到Safari并打开链接,这非常糟糕,因为用户无法返回我的应用程序。所以我想在我的应用程序中打开链接。用户单击链接后,我的应用程序将以模态方式显示视图以显示Web内容。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

  1. 您可能想要继承UILabel。当您更改文本时,让它尝试查看文本是否是超链接,如果是,则将其设置为启用用户交互并将文本颜色更改为蓝色。当用户点击链接时,向主视图控制器发送消息(可能通过委托)以打开链接。

  2. 在您的应用中显示网页内容,查看UIWebView。

答案 1 :(得分:0)

如果您的文本可以格式化为带有超链接(<a>标签)的html,您可以使用UIWebView来显示它。

当用户点击链接时,会调用UIWebViewDelegate的webView:shouldStartLoadWithRequest:navigationType:方法。通常,您可以让控制器实现此方法,并将UIWebView的委托设置为控制器。

答案 2 :(得分:0)

您将要查看名为LRLinkableLabel的Github项目。

它会自动检测.text属性中的所有网址。

您可以像这样使用它:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
label.delegate = self;
label.text = @"Check out http://dundermifflin.com to find some great paper deals!";

然后确保self实现此方法:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url {
    [[UIApplication sharedApplication] openURL:url];
}

您还可以使用linkColortextColor属性配置标签的外观。从这一点开始,您可以像使用任何其他UILabel一样使用它。

请务必在完成所有工作后将delegate设置为nil,以确保所有内容都已清理完毕。

希望这有帮助。