NSTextViewで文字列にリンクを設定する

任意の文字列にリンクを設定

NSTextStorageにキーがNSAttributedString.Key.linkで値がURLの属性を設定すれば任意の文字列にリンクを設定できます。

f:id:tid-a24:20190313225624p:plain

textView.string = "Link to Blog"
let url = URL(string: "https://tid-a24.hatenablog.com/")!
textView.textStorage?.addAttributes([.link: url], range: NSRange(textView.string))

URL文字列に自動でリンクを設定

NSTextViewにURL文字列が含まれて、そのURL文字列をリンクとして扱いたいなら
isAutomaticLinkDetectionEnabledプロパティをtrueにすれば自動でリンクとして設定されます。

f:id:tid-a24:20190313224546p:plain

textView.isAutomaticLinkDetectionEnabled = true

リンク属性の設定

リンクテキストの文字色やマウスオーバー時のカーソル形状などを変更するにはlinkTextAttributesプロパティに値を設定します。 デフォルトでは文字色はNSColor.linkColorでアンダーラインが付いたものになり、マウスオーバー時のカーソル形状は指差しハンドです。

  • マウスオーバー時のカーソル形状指定
textView.linkTextAttributes?[.cursor] = NSCursor.pointingHand
  • アンダーラインを消す
linkTextAttributes?[NSAttributedString.Key.underlineStyle] = nil