web-dev-qa-db-fra.com

Comment ajouter du texte d'espace réservé à l'éditeur de texte à Swiftui?

Lorsque vous utilisez le nouveau TextAditor de Swiftui, vous pouvez modifier son contenu directement à l'aide d'un @state. Cependant, je n'ai pas vu un moyen d'ajouter un texte d'espace réservé. Est-ce que c'est faisable en ce moment?

enter image description here

J'ai ajouté un exemple que Apple utilisé dans leur propre application de traduction. Qui semble être une vue d'éditeur de texte à plusieurs lignes qui prend en charge un texte de placement.

11
Legolas Wang

Avec une superposition, vous ne pourrez pas permettre de toucher le texte de l'espace réservé à l'utilisateur à écrire dans le TextAditor. Vous feriez mieux travail sur le fond, qui est une vue.

Donc, créez-le, tout en désactivant l'arrière-plan par défaut:

struct PlaceholderBg: View {

let text: String?

init(text:String? = nil) {
        UITextView.appearance().backgroundColor = .clear // necessary to remove the default bg
    
    self.text = text
 }

var body: some View {
    VStack {
    HStack{
    
    Text(text!)
          
    Spacer()
    }
    Spacer()
    }
}
    
}

ensuite, dans votre TextEditor:

 TextEditor(text: $yourVariable)
                        
                        .frame(width: x, y)
                        .background(yourVariable.isEmpty ? PlaceholderBg(texte: "my placeholder text") : PlaceholderBG(texte:""))
0
NightCoder