2016-03-25 5 views
2

Ich möchte ein NSTextField mit einem anklickbaren Link in es eingebettet erstellen. Also schrieb ich den folgenden Code in viewDidLoad: (die textField ist über @IBOutlet):Warum wird NSTextField nur anklickbar, nachdem ich auf die Zeichenfolgen geklickt habe?

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 

jedoch das Textfeld scheint nicht anklickbar zu sein, wenn ich die App laufen:

enter image description here

Und wenn ich versuchte, das Textfeld auszuwählen, wird es schließlich anklickbar, mit der Schnur, die sich nach unten rechts bewegt und dick wird:

enter image description here

Das ist so schreckliche Schnittstelle. Warum passiert das? Und wie kann ich es beim Start klickbar machen?

+0

http://StackOverflow.com/Questions/2131943/Why-Do-HyperLinks-Sometimes-Not-Show-in-Nanstextfield-with-annsattributedstrin?rq=1 – sschale

Antwort

0

Ich hatte gerade das gleiche Problem. Gefunden https://developer.apple.com/library/mac/qa/qa1487/_index.html und übersetzte es 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() 

Und das zeigt den Unterstrich (und blaue Schrift), wenn das Textfeld angezeigt wird.

Die Variable 'url' ist eine NSURL.

Verwandte Themen