SwiftUI submitLabel nefunguje na textový editor

0

Otázka

Chcem použiť .submitLabel ak chcete zmeniť "vrátiť" kľúč na niečo iné (konkrétne, .doneale to nevyzerá, práca s textový editor vstupného formulára. Je to má?

Vzorky kód:

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

Najlepšiu odpoveď

1

Nadchádzajúce Podporu

  • Podpora bola pridaná v Xcode 13.2 beta 3, ktorý nie je zatiaľ k dispozícii.

Dočasné Fix

Ok, tak na základe mojich pokusov, .submitLabel(...) nefunguje s textový editor. Je tu možné riešenie, v ktorom pridáte Text(...) ako subview na TextEditor(...) ale to je veľmi jenk a ja by som to odporúčajú. Je tu však riešenie, našiel som pre iOS 13, že sa zdá, že funkcia presne rovnakým spôsobom, že textový editor sa zobrazí na prácu, a to pomocou UIViewRepresentable. Našťastie je to veľmi jednoduché implementovať. Vytvorenie tejto struct.

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)
    }
}

Potom použite tento názor, ako by ste použiť TextView() ak priradíte jeho vlastnosti. Toto je efektívne ťahanie cez UIKit verzia textView, tak jeho vlastnosti sú rovnaké. Môžete dostať chuť s ním v tomto bode a mix SwiftUI a UIKit vlastnosti a modifikátorov.

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

Je nevýhodou to, že iOS 13 riešenie? Zvyšok môj projekt je zameraný na iOS 15.
John Sorensen

Len "Nevýhodou" je toho aby museli vysporiadať s UIViewRepresentable, ale zdá sa, že najjednoduchšie riešenie. Máte možnosť vytvoriť si vlastný názor, že využíva Text(...) a použitie @ViewBuilder ak chcete vytvoriť zobrazenie, ako ste ísť, ale mám pocit, že je príliš veľa úsilia na to, čo to stojí za to.
xTwisteDx

@xTwisteDx: existuje nejaký dôvod, pomocou UIViewRepresentableContext<Self>namiesto Context?
swiftPunk

V iných jazykoch

Táto stránka je v iných jazykoch

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