为什么NSTextField只有在点击字符串后才能变为可点击?

时间:2016-03-25 18:15:47

标签: swift cocoa nsattributedstring nstextfield

我想创建一个NSTextField,其中嵌入了可点击链接。所以我在viewDidLoad:中编写了以下代码(textField通过@IBOutlet连接):

    textField.allowsEditingTextAttributes = true
    textField.selectable = true

    let templateString = "Please check out "
    let linkString = "the following page"
    let string = NSMutableAttributedString(string: templateString + linkString)
    string.beginEditing()
    string.addAttributes([NSLinkAttributeName: appPageURLString, NSFontAttributeName: NSFont.systemFontOfSize(11.0) ], range: NSMakeRange(templateString.characters.count, linkString.characters.count))
    string.endEditing()

    textField.attributedStringValue = string

然而,当我运行应用程序时,文本字段似乎无法点击:

enter image description here

当我尝试选择文本字段时,它最终变为可点击状态,字符串稍微移动到右下方并变厚:

enter image description here

这是非常可怕的界面。为什么会这样?我怎样才能在发布时点击它?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。找到https://developer.apple.com/library/mac/qa/qa1487/_index.html并将其翻译为swift:

        attString.beginEditing()
        attString.addAttribute(NSLinkAttributeName, value: url.absoluteString, range: range)
        attString.addAttribute(NSForegroundColorAttributeName, value: NSColor.blueColor(), range: range)
        attString.addAttribute(NSUnderlineStyleAttributeName, value:NSNumber(integer: NSUnderlineStyle.StyleSingle.rawValue) , range: range)
        attString.endEditing()

显示文本字段时显示下划线(和蓝色字体)。

' url'变量是NSURL。