Etykieta wysyłania SwiftUI nie działa w edytorze tekstu

0

Pytanie

Chcę użyć .submitLabel aby zmienić klucz "zwrot" na coś innego (a mianowicie, .doneale wygląda na to, że nie działa z formą wprowadzania edytor tekstu. I tak powinno być?

Przykład kodu:

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

Najlepsza odpowiedź

1

Nadchodzący Wsparcie

  • Obsługa została dodana w wersji beta 3 Xcode 13.2, która jeszcze nie jest dostępna.

Tymczasowe Poprawki

Dobrze, więc, opierając się na moich próbach, .submitLabel(...) nie działa z edytorem tekstu. Istnieje rozwiązanie, w którym dodasz Text(...) jako podtypu dla TextEditor(...) ale to bardzo dziwne, Дженк, i nie polecam tego robić. Jednak znalazłem rozwiązanie dla iOS 13, które, jak się wydaje, działa dokładnie tak samo, jak się wydaje, działa edytor tekstu, i ono jest przeznaczone do użytku UIViewRepresentable. Na szczęście jest to bardzo łatwe do wdrożenia. Utwórz tę strukturę.

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

Następnie użyj tego widoku, tak, jak ty używałeś TextView() gdzie można przypisać jego właściwości. To skutecznie zatrzymuje UIKit wersja tekstowego, prezentacji, więc jego właściwości są takie same. Na tym etapie można marzyć z nim i wymieszać właściwości i modyfikatory SwiftUI i UIKit.

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

Czy wadą jest to, że jest to rozwiązanie dla iOS 13? Pozostała część mojego projektu koncentruje się na iOS 15.
John Sorensen

Jedyną "wadą" jest potrzeba mieć do czynienia z uiviewпредставляемым, ale wydaje się, że najprostsze rozwiązanie. Masz okazję stworzyć swój własny wygląd, który wykorzystuje Text(...) i używać @ViewBuilder aby zbudować reprezentację w trakcie sprawy, ale mam wrażenie, że to zbyt wiele wysiłku do tego, co to jest warte.
xTwisteDx

@xTwisteDx: czy Istnieje jakakolwiek przyczyna używać UIViewRepresentableContext<Self>zamiast Context?
swiftPunk

W innych językach

Ta strona jest w innych językach

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