ios - 如何在 NSAttributedString 中创建可点击链接?

标签 ios objective-c hyperlink uitextview nsattributedstring

UITextView 中使超链接可点击是微不足道的。您只需在 IB 的 View 上设置“检测链接”复选框,它就会检测 HTTP 链接并将它们转换为超链接。

但是,这仍然意味着用户看到的是“原始”链接。 RTF 文件和 HTML 都允许您设置用户可读的字符串,并在其“后面”添加一个链接。

很容易将属性文本安装到 TextView (或 UILabelUITextField,就此而言。)但是,当属性文本包含链接时,它不可点击。

有没有办法让 UITextViewUILabelUITextField 中的用户可读文本可点击?

SO 上的标记有所不同,但这是大致的想法。我想要的是这样的文字:

This morph was generated with Face Dancer, Click to view in the app store.

我唯一能得到的是这个:

This morph was generated with Face Dancer, Click on http://example.com/facedancer to view in the app store.

最佳答案

使用 NSMutableAttributedString .

NSMutableAttributedString * str = [[NSMutableAttributedString alloc] initWithString:@"Google"];
[str addAttribute: NSLinkAttributeName value: @"http://www.google.com" range: NSMakeRange(0, str.length)];
yourTextView.attributedText = str;

编辑:

这与问题无关,只是为了澄清,UITextFieldUILabel 不支持打开 URL。如果你想在链接中使用 UILabel 你可以查看 TTTAttributedLabel .

您还应该将 UITextViewdataDetectorTypes 值设置为 UIDataDetectorTypeLinkUIDataDetectorTypeAll 以在单击时打开 URL。或者您可以按照评论中的建议使用委托(delegate)方法。

关于ios - 如何在 NSAttributedString 中创建可点击链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21629784/

相关文章:

javascript - html 输入类型文件接受图像不允许在 ios 11 中选择文件

ios - 索引超出范围错误使我的应用程序崩溃

python - 为什么我的来自 django 电子邮件的 html 链接不可点击?

CSS 打印预览 - 显示图像/链接 URL

ios - Xcode 11.0-swift 的 Core Plot iOS 编译器错误

ios - 如何将界面构建器中文本字段的委托(delegate)设置为 "files owner"?

iphone - CFArray 和 NSArray 的区别

ios - Xcode 5 在带有 WebView 的新 View Controller 中加载 URL

ios - SKNode 子类应该如何与父场景和兄弟节点通信?

javascript - 如何检测单击了超链接右键单击上下文菜单中的哪个选项?