< How to run an asynchronous task when a view is shown | How to let users share content using the system share sheet > |
Updated for Xcode 14.2
New in iOS 16
SwiftUI has a dedicated PasteButton
view that lets us receive any kind of data that conforms to the Transferable
protocol, such as String
and Data
.
For example, we could let the user type into a text field, or add a PasteButton
to update the text directly:
struct ContentView: View {
@State private var username = "@twostraws"
var body: some View {
VStack {
TextField("Username", text: $username)
.textFieldStyle(.roundedBorder)
PasteButton(payloadType: String.self) { strings in
guard let first = strings.first else { return }
username = first
}
.buttonBorderShape(.capsule)
}
.padding()
}
}
Download this as an Xcode project
Notice how we specify String.self
as the payload type, but the input into the closure is an array of strings.
Given that TextField
has its own cut, copy, and paste menu options, I think PasteButton
will be much more useful in places where you aren’t handling text, e.g. when the user wants to paste a picture into your app.
SPONSORED From March 20th to 26th, you can join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.