在 UITextView
中使超链接可点击是微不足道的。您只需在 IB 的 View 上设置“检测链接”复选框,它就会检测 HTTP 链接并将它们转换为超链接。
但是,这仍然意味着用户看到的是“原始”链接。 RTF 文件和 HTML 都允许您设置用户可读的字符串,并在其“后面”添加一个链接。
很容易将属性文本安装到 TextView (或 UILabel
或 UITextField
,就此而言。)但是,当属性文本包含链接时,它不可点击。
有没有办法让 UITextView
、UILabel
或 UITextField
中的用户可读文本可点击?
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;
编辑:
这与问题无关,只是为了澄清,UITextField
和 UILabel
不支持打开 URL。如果你想在链接中使用 UILabel
你可以查看 TTTAttributedLabel .
您还应该将 UITextView
的 dataDetectorTypes
值设置为 UIDataDetectorTypeLink
或 UIDataDetectorTypeAll
以在单击时打开 URL。或者您可以按照评论中的建议使用委托(delegate)方法。
https://stackoverflow.com/questions/21629784/
相关文章:
objective-c - Objective-C Cocoa 应用程序中的正则表达式
objective-c - 如何在 Objective-C 中传递多个参数?
objective-c - 解决 Objective-C 命名空间冲突的最佳方法是什么?
ios - 以编程方式创建 UICollectionView
ios - 错误消息 '_BSMachError: (os/kern) invalid capabi
objective-c - Objective-C中方法旁边的加号和减号是什么意思?