📋

【Swift UI】コピペを実装する!

2024/05/29に公開

コピー(iOS 15.0+)

ビューに.textSelectionモディファイアを付与することで、テキストの選択が可能になります!

参考
https://developer.apple.com/documentation/swiftui/view/textselection(_:)

サンプルコード

import SwiftUI

struct ContentView: View {
    var body: some View {        
        Text("Text Selection")
            .textSelection(.enabled)        
    }
}

#Preview {
    ContentView()
}

ペースト(iOS 16.0+)

クリップボードからアプリにアイテムを貼り付けるためには、PasteButtonを使用します。

参考
https://developer.apple.com/documentation/swiftui/pastebutton

サンプルコード

import SwiftUI

struct ContentView: View {
    
    @State private var pastedText: String = ""
    
    var body: some View {
        
        Text("Text Selection")
            .textSelection(.enabled)
        
        HStack {
            PasteButton(payloadType: String.self) { strings in
                pastedText = strings[0]
            }
            .padding()
                        
            Text(pastedText)
            Spacer()
        }
        
    }
}

#Preview {
    ContentView()
}

.buttonBorderShape、.labelStyle、.tintモディファイアで、ボタンの形や色などを変更できます!

        VStack {            
            HStack {
                PasteButton(payloadType: String.self) { strings in }
                    .buttonBorderShape(.circle)
                    .labelStyle(.titleAndIcon)
                    .tint(.red)
                
                PasteButton(payloadType: String.self) { strings in }
                    .buttonBorderShape(.circle)
                    .labelStyle(.iconOnly)
            }
            
            HStack {
                PasteButton(payloadType: String.self) { strings in }
                    .buttonBorderShape(.roundedRectangle)
                
                PasteButton(payloadType: String.self) { strings in }
                    .buttonBorderShape(.roundedRectangle)
                    .labelStyle(.titleOnly)
                    .tint(.green)
            }
        }

Discussion