iOS 7 consente di inizializzare una NSAttributedString con un file o dati HTML. Voglio utilizzare questa funzionalità per semplificare l'inserimento dei link nei testi "Informazioni" delle app.Inizializzazione di NSAttributedString con file HTML analizza i collegamenti HTTP come file URL
Per raggiungere questo obiettivo, ho inizializzare il NSAttributedString con il seguente codice:
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];
e un file con il seguente contenuto:
<html><body>
<p>This is a <a href=\"http://www.stackoverflow.com\">test link</a>. It leads to StackOverflow.<p>
</body></html>
Aggiornamento
È possibile che questo HTML ancora ha avuto i segni di fuga dal tentativo di usarlo in codice come NSString. Rimuovendo gli escape, funziona perfettamente. Ha anche risposto alla mia domanda qui sotto.
aggiornamento Fine
Questo funziona bene, e dà una stringa con l'URL correttamente formattato e cliccabile. Facendo clic sul collegamento chiama delegate di UITextView -textView: shouldInteractWithURL: inRange: method. Tuttavia, l'ispezione del parametro URL mostra che l'URL ha effettivamente la seguente stringa assoluta:
file:///%22http://www.google.com/%22
che ovviamente non apre la pagina Web appropriata. Non trovo la documentazione su NSAttributedText abbastanza chiara da determinare il motivo per cui ciò accade.
Qualcuno sa come dovrei inizializzare NSAttributedString per generare l'URL appropriato?
Questo non funzionerebbe, poiché -initWithHTML è un metodo solo OSX e non è definito per iOS. Tuttavia, la tua soluzione mi ha dato un indizio per la soluzione. Grazie mille! – SpacyRicochet
Ho controllato la documentazione di 'NSAttributedString' per iOS e hai ragione. Tuttavia è menzionato nella guida alla programmazione della stringa attribuita https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/AttributedStrings/Tasks/CreatingAttributedStrings.html#//apple_ref/doc/uid/20000714-BBCCGGCC Ciò nonostante Sono contento di averti aiutato indirettamente :) – gimenete
Yup. Lo abbiamo capito dopo aver rivisitato l'HTML dopo averlo inserito in un oggetto NSData. È venuto fuori che ho dimenticato di rimuovere gli escape dal contenuto HTML. – SpacyRicochet