NSAttributedString,URL不起作用

时间:2015-08-11 08:43:57

标签: ios swift nsurl nsattributedstring

在一个快速的iOS应用程序中,我已经设置了一个带有NSAttributedString的UILabel。 AttributedString包含一个使用

设置的URL
[NSLinkAttributeName:NSURL(string:urlStr)!].

所有内容都显示正常,这意味着网址设置明确,但当我点击它时没有任何反应。

我是否应该做一些让人们期望的URL(即fire Safari)?

我尝试了以下但它根本没有效果。

theLabel.userInteractionEnabled = true

2 个答案:

答案 0 :(得分:4)

NSLinkAttribute不能与UILabel一起使用,因为处理程序方法将仅响应UItextViewDelegate。

你可以使用。 TTTAttributedLabel或者可以使用UITextView替换UILabel。更换相同用途后

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange

不要忘记检查检测和行为属性。

答案 1 :(得分:1)

试试这段代码:

var str: NSMutableAttributedString = NSMutableAttributedString(string: "Google")
        str.addAttribute(NSLinkAttributeName, value: "http://www.google.com", range: NSMakeRange(0, str.length))
        yourLabel.attributedText = str

这不是直接关于这个问题,只是为了澄清,UITextField和UILabel不支持打开网址。如果您想使用UILabel链接,可以查看TTTAttributedLabel

此外,您应将UITextView的dataDetectorTypes值设置为UIDataDetectorTypeLinkUIDataDetectorTypeAll,以便在点击时打开网址。或者您可以使用评论中建议的委托方法。