いろは2993462 views
世界の国561479 views
高校日本史190006 views
高校化学2915516 views
MathPython493120 views
小学理科717868 views
教育149067 views
小学算数1196702 views
数学講師2862298 views
中学英語809495 views

SwiftUI Text の選択を有効にする

iOS 15 以降、SwiftUI の Text はテキスト選択をサポートしています。ユーザーが Text の内容を選択してコピーできるようになります。

textSelection モディファイア

.textSelection() で選択機能を有効にします。

Text("このテキストは選択できます")
    .textSelection(.enabled)

長押しするとテキストを選択でき、コピーメニューが表示されます。

複数の Text に適用

親ビューに適用すると、子の Text すべてに反映されます。

VStack(alignment: .leading, spacing: 8) {
    Text("1行目のテキスト")
    Text("2行目のテキスト")
    Text("3行目のテキスト")
}
.textSelection(.enabled)

この場合、すべての行が選択可能になります。

選択を無効にする

明示的に無効化することもできます。

VStack {
    Text("選択可能")
    Text("選択不可")
        .textSelection(.disabled)
}
.textSelection(.enabled)

親で有効にしても、個別に無効化できます。

macOS での動作

macOS ではデフォルトでテキスト選択が有効な場合があります。iOS と挙動を揃えたい場合は明示的に指定するとよいでしょう。

注意点

選択可能な Text

ユーザーがコピーしたいコンテンツ、エラーメッセージ、コード例など

選択を無効にすべき Text

ボタンのラベル、ナビゲーションタイトル、UI の説明テキストなど

長文の記事やコードスニペットを表示する場面では、.textSelection(.enabled) を付けておくとユーザビリティが向上します。