我的应用会显示一些文字,我希望能够点击超链接。我对此功能有一些疑问。
如何解析文本以了解这是一个链接?
一旦用户点击链接,我不希望操作系统切换到Safari并打开链接,这非常糟糕,因为用户无法返回我的应用程序。所以我想在我的应用程序中打开链接。用户单击链接后,我的应用程序将以模态方式显示视图以显示Web内容。任何建议都将不胜感激。
答案 0 :(得分:1)
您可能想要继承UILabel。当您更改文本时,让它尝试查看文本是否是超链接,如果是,则将其设置为启用用户交互并将文本颜色更改为蓝色。当用户点击链接时,向主视图控制器发送消息(可能通过委托)以打开链接。
在您的应用中显示网页内容,查看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];
}
您还可以使用linkColor
和textColor
属性配置标签的外观。从这一点开始,您可以像使用任何其他UILabel一样使用它。
请务必在完成所有工作后将delegate
设置为nil
,以确保所有内容都已清理完毕。
希望这有帮助。