Objective c NSMutableAttributedString iOS6中的可单击URL
我正在开发一个有趣的应用程序,从远程网络服务(如Twitter)接收消息。有时,这些消息包含URL:s,我想让它们可以点击。我不知道哪种方法最好。我尝试过NSLinkAttributeName,但它不适用于iOS。是否可以创建一个透明按钮并将其放置在textview的正确位置上方?我怎么能做到呢?还是有更好/更简单的方法?url的位置和长度可能会有所不同 一个选项是使用Objective c NSMutableAttributedString iOS6中的可单击URL,objective-c,ios,ios6,Objective C,Ios,Ios6,我正在开发一个有趣的应用程序,从远程网络服务(如Twitter)接收消息。有时,这些消息包含URL:s,我想让它们可以点击。我不知道哪种方法最好。我尝试过NSLinkAttributeName,但它不适用于iOS。是否可以创建一个透明按钮并将其放置在textview的正确位置上方?我怎么能做到呢?还是有更好/更简单的方法?url的位置和长度可能会有所不同 一个选项是使用UIDataDetectorTypeLink。检查这个 其他一些选项是UIWebview,其中的代理可以处理触摸其中的URL。另
UIDataDetectorTypeLink
。检查这个
其他一些选项是UIWebview
,其中的代理可以处理触摸其中的URL。另一个选择是
对于您提出的其他问题,请勾选此项,有两种很好的解决方法: 1。CoreText,或者更确切地说是它的包装,如 这是最强大的解决方案。它支持Datadetectortypes(尽管您最好先进行自己的性能检测,然后再显示),而且它相对流行 但是,它可能会影响tableview的滚动性能,具体取决于您的使用情况 2。在标签上方动态放置按钮,如
这是一个简单的解决办法。IFTweetLabel基本上是UILabel的一个插件,它的开箱即用性能非常好。但是,如果您希望对其进行过多的自定义,那么最终会遇到它的限制。更不用说它并不是100%都表现完美。YMMV.
NSLinkAttributeName
可通过UITextView
进行点击,但不能通过UILabel
进行点击。请注意,UITextView必须是可选择的(在脚本中)
快速演示:
let attributedText = NSMutableAttributedString(string: "Hello world")
attributedText.addAttribute(.link, value: URL(string: "https://example.com")!, range: NSRange(location: 0, length: attributedText.length))
textView.attributedText = attributedText
谢谢,UIDataDetectorTypeLink似乎适用于链接。但是我想知道是否有可能改变链接的外观,或者更具体地说是颜色。并进行更改,使其在自定义UIWebView而不是Safari中打开?通过对UITextView进行子类化,是否可以创建自定义UIDataDetectorTypes,如@References和#hashtags。请检查此项,查看、并使用筛选器更改UITextView链接的颜色。。我已经用这些链接更新了我的答案。谢谢,我决定使用TTributedLabel。
let attributedText = NSMutableAttributedString(string: "Hello world")
attributedText.addAttribute(.link, value: URL(string: "https://example.com")!, range: NSRange(location: 0, length: attributedText.length))
textView.attributedText = attributedText