iPhoneアプリでのリンクジャンプ機能付きテキストの作り方

作成しているアプリで、プライバシーポリシー等へのリンクを作る必要が出てきました。
サクっと作れるかと思っていたんですが、思ったより手間取ったので、作り方を書いてみます。

リンク付きテキスト

作りたいのは、リンクが設定されていてクリックするとそのリンクへジャンプするテキスト。UILabelでも、UITextViewでも気にしません。

そのままで使えるViewはないらしい@UIKit

SwiftUIだと別かもしれないけれども、UIKitには、そのまま使えば良いようなViewは用意されていないらしい。
これまでそのようなテキストを作る必要がなかったので、気づかなかったけれども、少し意外。それなりに多くの人が使う機能だと思うんだけどなぁ。

NSAttributedStringを使います

調べてみると、NSAttributedStringが使えるみたいでした。
いまのアプリで色やサイズを指定するのに、Attributeを使っていましたが、色だけではなかった!リンクも扱えるみたいです。

この機能を使って、AttributedTextの一部にリンクを設定することもできます。
今回は、TextViewを使って実装してみます。

サンプルコード リンク設定部分

以下のような形で、文字列の一部にリンクを設定することができます。(この設定で、文字の色がいわゆるリンク色になります)

アプリの文字列を外出ししている関係で読みにくくなってますが、全体の文字列から該当する文字列の位置を探して、そのRangeにリンクを設定するということを行ってます。
上記だけでは、色しか変わらないので、クリックされた時のリンクへジャンプする機能の設定が必要となります。

サンプルコード リンクへのジャンプ部分

今回は、UITextViewを使用しているので、UITextViewDelegateに準拠するクラスが必要となります。そのクラスの中で以下を実装します。

どのように開くかはいろいろと好みがあるかもしれませんが、一番オーソドックスになってます。この部分が、開き方を指定している箇所なので、好みに応じて変えてもらえば、開き方も変えることができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です