iOS 7, bir NSAttributedString öğesinin bir HTML dosyası veya verileriyle başlatılmasına izin verir. Uygulamaların metinleri hakkında 'Hakkında' bağlantı eklemeyi kolaylaştırmak için bu işlevi kullanmak istiyorum.NSAttributedString öğesinin HTML dosyası ile başlatılması HTTP bağlantılarını dosya URL'leri olarak ayrıştırır
Bunu başarmak için, aşağıdaki kodu ile NSAttributedString başlatmak:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test.html" withExtension:nil];
NSError *error = nil;
NSDictionary *options = nil;
NSDictionary *attributes = nil;
_textView.attributedText = [[NSAttributedString alloc] initWithFileURL:url options:options documentAttributes:&attributes error:&error];
ve aşağıdaki içeriğe sahip bir dosya:
<html><body>
<p>This is a <a href=\"http://www.stackoverflow.com\">test link</a>. It leads to StackOverflow.<p>
</body></html>
Güncelleme hala
Yukarıdaki HTML NSString olarak kodda kullanmaya çalışmaktan kaçış izleri vardı. Kaçakları kaldırmak sadece iyi çalışır. Ayrıca kendi sorumu aşağıda cevapladı.
Güncelleme Sonu
Bu iyi çalışır ve düzgün bir şekilde biçimlendirilmiş url ve tıklanabilir bir dize verir. Bağlantıyı tıklamak UITextView'ın temsilci -textView: shouldInteractWithURL: inRange: yöntemini çağırır. Ancak, URL parametresini teftiş aslında URL gösterilmesi aşağıdaki mutlak dize vardır: Açıkçası uygun web sayfasını açmıyor
file:///%22http://www.google.com/%22
. NSAttributedText ile ilgili belgelerin, bunun neden olduğunu belirleyecek kadar açık bir şekilde bulamıyorum.
Uygun URL oluşturmak için NSAttributedString'i nasıl başlatmalıyım bilen var mı?
Bu, işe yaramaz çünkü -initWithHTML bir OSX tek yöntemidir ve iOS için tanımlanmamıştır. Bununla birlikte, çözüm size çözüm için bir ipucu verdi. Çok teşekkürler! – SpacyRicochet
iOS için NSAttributedString belgelerini kontrol ettim ve haklısınız. Ancak, http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/AttributedStrings/Tasks/CreatingAttributedStrings.html#//apple_ref/doc/uid/20000714-BBCCGGCC adresindeki Yönlendirilmiş Dize programlama kılavuzunda belirtilmiştir. Size dolaylı olarak yardımcı olduğuma sevindim :) – gimenete
Yup. Bir NSData nesnesine koyulduktan sonra HTML'yi tekrar gözden geçirdikten sonra bunu anladım. Çıktığında, HTML içeriğinden çıkışları kaldırmayı unuttum. – SpacyRicochet