ios - 如何在 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)方法。

https://stackoverflow.com/questions/21629784/

相关文章:

objective-c - Objective-C Cocoa 应用程序中的正则表达式

objective-c - 如何在 Objective-C 中传递多个参数?

ios - 如何以编程方式从类加载 Storyboard?

objective-c - 解决 Objective-C 命名空间冲突的最佳方法是什么?

ios - 以编程方式创建 UICollectionView

ios - 错误消息 '_BSMachError: (os/kern) invalid capabi

objective-c - Objective-C中方法旁边的加号和减号是什么意思?

ios - 为 iOS 7 半透明 UINavigationBar 实现明亮、生动的色彩

ios - 有没有办法检查iOS应用程序是否在后台?

objective-c - 将 UIImage 转换为 NSData