ein Beispiel herunterladen I erstellt habenSwift - NSMutableAttributedString ändert sich der Text in UITextView
ich einen Link zu meiner UITextView wie dies am Zusatz:
let systemFont = self.text.font!
let linkAttributes = [
NSFontAttributeName : systemFont,
NSLinkAttributeName: NSURL(string: alertController.textFields![0].text!)!] as [String : Any]
let myAttributes2 = [ NSForegroundColorAttributeName: customGreen]
let attributedString = NSMutableAttributedString(string: "\(urlName)")
// Set the 'click here' substring to be the link
attributedString.setAttributes(linkAttributes, range: NSMakeRange(0, urlName.characters.count))//(0, urlName.characters.count))
self.text.linkTextAttributes = myAttributes2
self.text.textStorage.insert(attributedString, at: self.text.selectedRange.location)
let cursor = NSRange(location: self.text.selectedRange.location + "\(urlName)".characters.count, length: 0)
self.text.selectedRange = cursor
// self.text.font = systemFont
Aber nach dem Einlegen ändert sich der gesamte aktuelle Text in UITextView in die gleiche Schriftart.
Also zum Beispiel, wenn ich Text habe, der fett ist und mehr Text, der kursiv ist, nachdem ich die URL (die Systemschriftart) hinzugefügt hat, setzt er den ganzen fett/kursiven Text auf die Systemschriftart zurück ....
Wenn jemand weiß, wie man die aktuelle Schriftart des vorherigen Textes behält, würde ich die Hilfe wirklich schätzen.
Für weitere Erklärungen einfach einen Kommentar hinterlassen!
Vielen Dank im Voraus an alle, die helfen können!
aktualisieren
ich den Text hier in textDidChange am Wechsel
if text == " " {
// let systemFont = self.text.font!
// let linkAttributes = [NSFontAttributeName : systemFont]
let attributes = [NSForegroundColorAttributeName: UIColor.black, NSFontAttributeName: self.text.font!] as [String : Any]
let attributedString = NSMutableAttributedString(string: text, attributes: attributes)
self.text.textStorage.insert(attributedString, at: range.location)
let cursor = NSRange(location: self.text.selectedRange.location+1, length: 0)
textView.selectedRange = cursor
return false
}
Ich habe das so nach dem Hinzufügen der URL ich einen Raum zu machen und setzen Sie die Schrift so kann ich weiterhin nicht Typisierung als eine URL-Verbindung ... Wahrscheinlich das Problem, aber wenn ich normal schreibe und eine URL-Verknüpfung nicht den Text nicht ändert, während ein Leerzeichen machen ...
Ihr Code scheint in Ordnung zu sein, können Sie bitte mehr ausarbeiten? –
@ J.Koush Nun, das ist, was ich auch dachte. Im Grunde genommen ist das meine UITextView: ** Dies ist ein fettgedruckter Text ** und __Dies ist ein kursiver Text__ (Soviel zu unterschiedliche Arten von Fonts) www.Google.com (dies ist System Font Text.Nach dem Hinzufügen dieses Links wird der vorherige fett gedruckte Text und der kursive Text als || Systemschriftart (normaler Text wie hier) || festgelegt und natürlich möchte ich den vorherigen fett- und kursiven Text beibehalten und möchte nur, dass der Link Systemschriftart ist. nicht sicher, ob das noch hilft ... Ich werde versuchen, ein Beispiel zu bekommen, das später gemacht wird, wenn du es nicht verstehst? –
hast du die letzte Zeile '// self.text.font = systemFont' auskommentiert, da es in meiner App funktioniert, vergewissere dich, dass du die Schriftart auf dem UITextView nicht woanders änderst. –