В SwiftUI возможность выбора текста может быть полезной функцией для улучшения взаимодействия с пользователем и предоставления пользователям возможности копировать текстовое содержимое или взаимодействовать с ним в вашем приложении. В этой статье блога мы рассмотрим несколько методов обеспечения возможности выбора текста в SwiftUI, а также примеры кода для каждого подхода.
Метод 1: использование TextView
Один из способов включить возможность выбора текста — использовать UITextView, завернутый в UIViewRepresentableв SwiftUI. Вот пример:
import SwiftUI
import UIKit
struct SelectableText: UIViewRepresentable {
var text: String
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.isEditable = false
textView.isSelectable = true
textView.dataDetectorTypes = .all
return textView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
}
}
struct ContentView: View {
var body: some View {
SelectableText(text: "Selectable text example")
}
}
Метод 2: использование кнопки с действием
Другой подход — использовать Buttonс действием, которое копирует текст в буфер обмена при нажатии. Вот пример:
import SwiftUI
struct ContentView: View {
@State private var isCopied = false
var textToCopy = "Selectable text example"
var body: some View {
Button(action: {
UIPasteboard.general.string = textToCopy
isCopied = true
}) {
Text(textToCopy)
.foregroundColor(isCopied ? .green : .blue)
}
}
}
Метод 3: использование LongPressGesture
В этом методе мы можем использовать представление Textс LongPressGestureдля запуска действия, например копирования текста. Вот пример:
import SwiftUI
struct ContentView: View {
@State private var isCopied = false
var textToCopy = "Selectable text example"
var body: some View {
Text(textToCopy)
.foregroundColor(isCopied ? .green : .blue)
.gesture(
LongPressGesture()
.onEnded { _ in
UIPasteboard.general.string = textToCopy
isCopied = true
}
)
}
}
В этой статье мы рассмотрели три различных способа сделать текст доступным для выбора в SwiftUI. Используя UITextView, заключенный в UIViewRepresentable, Buttonс действием или представление Textс LongPressGesture, вы можете обеспечить возможность выбора текста в своем приложении SwiftUI. Выберите метод, который соответствует вашим потребностям и повышает удобство использования.