解放区在住氷翠メニュー

選択範囲の文字に装飾したい

swift > 未分類 > 開発

2018-04-16 19:58

LINEで送る

まずは、出来上がりのフォームはこちら

TextViewで編集することを想定しているので、NSTextViewを使ったやり方になります。

文字の装飾といっても、文字の色を変更するとか、そういうのではないのですが、選択した文字の前後にHTMLのタグを入れたいというのが、今回の目的となります。

ボタンをクリックしたらそうなる。
なので、今回のコードはそのボタンの関数の中身だけをやってみます。

ということで、早速コードです。

まず、選択されている文字列の位置関係を明確にしないといけません。

「tv」という変数は「NSTextView」の変数としています。

ということで、「tv.selectedRange().location」で選択開始位置を取得しています。
その次の行で、開始位置が-1なら何もしないで終了させるようにしています。

次に選択範囲として何文字選択されているのか、「tv.selectedRange().length」で取得します。
これは選択開始位置から何文字なのか?というものなので、最初から数えてどこまでなのかというわけではありません。
その次の行ではその範囲の文字数が0なら何もせずに終了としています。

それ以降は文字を取り出す処理をしています。
最初から選択範囲が始まる位置まで、選択範囲が始まる位置から終わる位置まで、選択範囲が終わった位置から後ろまでと、細かく分割しています。

ちなみに、「substring」という関数は拡張しています。

これは拾いものです。
ちょうどいいプログラムがあったので、拝借しました。
使わせて頂きます。

実際に実行してみます。
で、とりあえず、文字を適当に入力します。
文字を選択して、ボタンをクリックします。すると、その選択範囲の前後にタグがついたことを確認できます。

コメントを残す

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.