SwiftUI submitLabel no funciona en el Editor de texto

0

Pregunta

Quiero usar .submitLabel para cambiar el "retorno" de la clave a otra cosa (es decir, .done), pero no aparece para trabajar con el Editor de texto de formulario de entrada. Se supone?

Código de ejemplo:

struct ContentView: View {
    @State var text: String = ""

    var body: some View {
        Form {
            TextEditor(text: $text)
                .submitLabel(.search)
        }
    }
}
input swiftui
2021-11-24 00:06:56
1

Mejor respuesta

1

Próxima Apoyo

  • Se añadió soporte en Xcode 13.2 beta 3, que todavía no está disponible.

Solución Temporal

Ok, así que basado en mis intentos, .submitLabel(...) no funciona con el Editor de texto. Hay una posible solución donde agregar un Text(...) como una subvista a la TextEditor(...) pero que es extremadamente jenk y no recomiendo que. Sin embargo, existe una solución que he encontrado para iOS 13 que parece funcionar exactamente de la misma manera que el Editor de texto que aparece a la obra y que es el uso de UIViewRepresentable. Afortunadamente es muy fácil de implementar. Crear esta estructura.

struct TextView: UIViewRepresentable {
    
    typealias UIViewType = UITextView
    var configuration = { (view: UIViewType) in }
    
    func makeUIView(context: UIViewRepresentableContext<Self>) -> UIViewType {
        UIViewType()
    }
    
    func updateUIView(_ uiView: UIViewType, context: UIViewRepresentableContext<Self>) {
        configuration(uiView)
    }
}

A continuación, utilice la vista o usted podría usar un TextView() en la que asignar sus propiedades. Este es, efectivamente, tirando más de la UIKit versión de un textView, por lo que sus propiedades serán los mismos. Usted puede obtener de fantasía con él en este punto y mezclar SwiftUI y UIKit propiedades y modificadores.

    TextView { view in
        view.text = sampleText
        view.returnKeyType = .done
    }
2021-11-25 01:56:48

Hay desventaja de ser un iOS 13 solución? El resto de mi proyecto está dirigido a iOS 15.
John Sorensen

La única "Desventaja" es tener que lidiar con UIViewRepresentable pero parece ser la solución más fácil. Usted tiene la opción de crear su propia vista personalizada que utiliza Text(...) y el uso de @ViewBuilder para crear una vista de como va, pero me da la sensación de que es demasiado esfuerzo para lo que vale.
xTwisteDx

@xTwisteDx: ¿hay alguna razón el uso de UIViewRepresentableContext<Self>en lugar de Context?
swiftPunk

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................