biri alt dize de özelliklerini alınıyor içinde bir bağlantı vardır bir NSAttributeString vardır:3 Swift: NSAttributedString
@IBOutlet var textView: UITextView!
// Below is extracted from viewDidLoad()
let linkStr = "Click <a href='http://google.com'>here</a> for good times."
let attributedText = try! NSAttributedString(
data: linkStr.data(using: String.Encoding.unicode, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
textView.attributedText = attributedText
ben denetleyicisi için bir birim test yazıyorum ve bunu doğrulamak istediğiniz Doğru link "here" metnine konuldu. (Bağlantı aslında dinamik olarak üretilir, bu yüzden test etmek istiyorum).
let url = uviewController.textView.attributedText.attribute(
"NSLink", at: 6, effectiveRange: nil)
// url == A URL object for http://google.com.
sorundur:
let text = viewController.textView.attributedText.string
// text == "Click here for good times."
Ben de böyle bir şey yaparak "burada" den bağlantı özelliğine alabilirsiniz:
Neyse, belli ki böyle ilişkilendirilmemiş metin alabilirsiniz at
parametresi için "6" kodunu kodlamak zorunda kaldım. linkStr
'un değeri gelecekte değişebilir ve testimi her zaman güncellemek zorunda kalmak istemiyorum. Bu durumda, bu kelimeye bağlı olan bağlantı ile her zaman "burada" kelimesine sahip olacağını varsayabiliriz.
yüzden yapmak istiyorum kelimesinin ne "burada" linkStr
yılında olduğu için karakterini bulup NSLink
niteliğini çekin ve sağa işaret doğrulamak amacıyla at
parametresine bu değeri geçmesi olduğunu URL. Ama bunu yapmak için Swift'de string aralıklarını ve dizinleri nasıl kullanacağım konusunda kafaları veya kuyrukları yapmakta sorun yaşıyorum.
Herhangi bir öneriniz var mı?
Vay ... tahmin etmezdi Bu örneğe bağlı olarak Swift 3 oyun alanı kodudur. Swift ... bazen ilginçtir. Teşekkürler! – Chad