2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

【Swift】UITextViewでHTMLを表示してアンカータグをタップ可能にする

やりたいこと

UITextViewでhtmlを表示してアンカータグをタップ可能にかっただけなのですが、巷の記事を参考にしても実装が出来なかったので成功体験を共有できればと思います。

環境

  • Xcode:12.5.1
  • Swift:5.4.2

実装

NSAttributedString型に変換する際にオプションを指定してあげるだけです。
これでHTMLとして表示することが可能です。

    textView.attributedText = convertToAttributeString(contents: information.infoContents)

    private func convertToAttributeString(text: String) -> NSAttributedString? {
        guard let data = text.data(using: .utf8) else { return nil }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            return nil
        }
    }

アンカータグをタップしたときにブラウザで開けるようにする

UITextViewのプロパティを設定する必要があります。
ポイントは以下の点です。

  • BehaviorのSelectableをtrueにする
  • BehaviorのEditableをfalseにする
  • Data DetectorsのLinkをtrueにする
  • InteractionのUser Interaction Enabledをtrueにする

textview_editing.png
textview_property2.png
これで表示されるリンクをタップするとSafariが立ち上がり対象のURLが表示されるはずです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?