iOS 7 では、NSAttributedString を HTML ファイルまたはデータで初期化できます。この機能を使って、アプリの「About」テキストにリンクを簡単に挿入できるようにしたいと考えています。
これを実現するために、次のコードで NSAttributedString を初期化します。
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];
および次の内容のファイル:
<html><body>
<p>This is a <a href=\"http://www.stackoverflow.com\">test link</a>. It leads to StackOverflow.<p>
</body></html>
アップデート
上記の HTML には、コード内で NSString として使用しようとしたことによるエスケープ マークがまだありました。エスケープを削除すると、問題なく動作します。以下の私自身の質問にも答えました。
更新終了
これは正常に機能し、適切にフォーマットされたクリック可能な URL を含む文字列を提供します。リンクをクリックすると、UITextView のデリゲート -textView:shouldInteractWithURL:inRange: メソッドが呼び出されます。ただし、URL パラメータを調べると、実際には URL に次の絶対文字列が含まれていることがわかります。
file:///%22http://www.google.com/%22
これは明らかに適切な Web ページを開きません。なぜこれが起こるのかを判断するのに十分なほど明確な NSAttributedText に関するドキュメントは見つかりません。
NSAttributedString を初期化して適切な URL を生成する方法を知っている人はいますか?