एक उदाहरण मैंस्विफ्ट NSMutableAttributedString UITextView
मैं इस तरह मेरी UITextView का लिंक जोड़ रहा बनाया है डाउनलोड परिवर्तन:
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
लेकिन यह डालने के बाद , यह UITextView में सभी मौजूदा टेक्स्ट को उसी फ़ॉन्ट पर बदल देता है।
तो उदाहरण के लिए यदि मेरे पास बोल्ड है और कुछ और पाठ है जो इटालिक है, तो यूआरएल जोड़ने के बाद (जो सिस्टम फ़ॉन्ट है) यह सभी बोल्ड/इटैलिक टेक्स्ट सिस्टम फ़ॉन्ट पर रीसेट करता है ....
यदि कोई जानता है कि पिछले पाठ के वर्तमान फ़ॉन्ट को कैसे रखा जाए तो मैं वास्तव में सहायता की सराहना करता हूं।
किसी और स्पष्टीकरण के लिए बस नीचे एक टिप्पणी छोड़ दो!
किसी भी व्यक्ति को अग्रिम धन्यवाद जो मदद कर सकता है!
अद्यतन
मैं textDidChange
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
}
में यहां पाठ बदलने हूँ मेरे पास है कि मैं एक जगह बनाने के और फ़ॉन्ट रीसेट तो मैं के रूप में टाइपिंग जारी रखने के लिए नहीं है इसलिए यूआरएल जोड़ने के बाद एक यूआरएल लिंक ... शायद समस्या है, लेकिन जब मैं सामान्य टाइप करता हूं और यूआरएल लिंक सेट नहीं करता हूं तो स्पेस बनाने के दौरान टेक्स्ट बदल नहीं रहा है ...
आपका कोड ठीक लगता है, क्या आप कृपया अधिक विस्तृत कर सकते हैं? –
@ जे। कौश वैसे, मैंने जो भी सोचा था। असल में यह मेरा यूआईटीएक्स्टव्यू है: ** यह कुछ बोल्ड टेक्स्ट ** है और __ यह कुछ इटैलिक टेक्स्ट__ है (अब तक फोंट के बहुत अलग प्रकार हैं) www.Google.com (यह सिस्टम फ़ॉन्ट टेक्स्ट है।इस लिंक को जोड़ने के बाद यह पिछले बोल्ड टेक्स्ट और इटैलिक टेक्स्ट को सेट करता है || सिस्टम फ़ॉन्ट टेक्स्ट (यहां सामान्य टेक्स्ट।) || और जाहिर है कि मैं पिछले बोल्ड टेक्स्ट और इटैलिक टेक्स्ट रखना चाहता हूं और सिर्फ लिंक को फ़ॉन्ट फ़ॉन्ट टेक्स्ट होना चाहता हूं।)। यकीन नहीं है कि अगर यह अब और मदद करता है ... यदि आप समझ में नहीं आते हैं तो मैं कोशिश करूँगा और बाद में एक उदाहरण प्राप्त करूंगा? –
क्या आपने पिछली पंक्ति '// self.text.font = systemFont' को अनमोल किया था, क्योंकि यह मेरे ऐप पर काम कर रहा है, सुनिश्चित करें कि आप कहीं और UITextView पर फ़ॉन्ट नहीं बदल रहे हैं। –