xyk blog

最近は iOS 開発の記事が多めです。

Swift で UITextView のテキスト内のURLをリンク化する

検証環境:
Xcode 12
Swift 5.3

UITextView のテキスト内のURLをリンク化するには、isSelectableプロパティをtrue、そしてdataDetectorTypesプロパティに.linkを指定すればよい。
これでURL部分がリンク化され、リンクをタップすると Safari で開くようになる。

let textView = UITextView()
textView.text = "..."
textView.isEditable = false
textView.isSelectable = true
textView.dataDetectorTypes = [.link]

StoryBoard から設定する場合

f:id:xyk:20201104152854p:plain

表示例

f:id:xyk:20201104154843p:plain

http スキームがなくてもリンクとして検出された。


URL ではない任意の文字列をリンク化したい場合は以前書いたような UITextView のattributedTextlinkTextAttributesプロパティを設定してリンク化する方法がある。

xyk.hatenablog.com


ちなみに UILabel では UITextView と同じようなやり方はできず、自前で実装する必要がある。
同様の機能を実装した OSS が公開されているので、これらの使用を検討するとよいかも。

github.com

github.com