NSLinkAttributeName不工作在UITextView

问题描述:

我正在一个IOS应用程序,我正在使用斯威夫特。我想让单词点击并打开一些URL(现在www.apple.com),然后点击该单词。NSLinkAttributeName不工作在UITextView

我正在使用下面的代码,但由于某种原因它不工作。

func setDescription(description: NSAttributedString) 
{ 
    let descriptionRect = CGRectMake(10, 50, self.bounds.size.width - 20, self.bounds.size.height-20) 
    let descriptionView = UITextView(frame: descriptionRect) 
    descriptionView.editable = false 
    descriptionView.selectable = false 
    descriptionView.attributedText = description 
    descriptionView.delegate = self 
    descriptionView.font = UIFont(name: "Helvetica", size: 14) 
    NSLog("%@", descriptionView.attributedText) 
    self.addSubview(descriptionView) 
} 

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 
    NSLog("In text view delegate") 
    return true; 
} 

以下代码段以一个字符串和形式归因串与第一字符5保持 NSLinkNameAttribute。然后我调用setDescription函数将此属性字符串添加到TextView。

  let mutableAttrString = NSMutableAttributedString(string: attrString1) 
      let linkURL = NSURL(string: "http://www.apple.com") 
      mutableAttrString.addAttribute(NSLinkAttributeName,value: linkURL!,range: NSMakeRange(0, 5)) 
      wordDetailView.setDescription(mutableAttrString) 

当我点击具有链接属性的单词textview委托甚至没有被调用!!!! 有人可以帮我解释为什么它不工作,以及如何使它工作。

谢谢。

从UITextViewDelegate参考:

在文本视图重要环节是互动的只有文本视图是 选择,但不可编辑。也就是说,如果UITextView 可选属性的值为YES,并且isEditable属性为NO。

因此改变descriptionView.selectable = falsedescriptionView.selectable = true

+0

修改descriptionView.selectable为true。即使那样它不起作用。 – sr116

+4

您是在设备上还是在模拟器上测试?有时在模拟器中,水龙头不会注册链接。尝试长时间按在词的中心,它会起作用。 – beyowulf

+0

长按确实工作。谢谢。 – sr116