SwiftUİ submitLabel TextEditor üzerinde çalışmıyor

0

Soru

Kullanmak istiyorum .submitLabel "return" tuşunu başka bir şeye değiştirmek için (yani, .done) ancak TextEditor giriş formu ile çalışmıyor gibi görünüyor. Gerekiyor mu?

Örnek kod:

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

En iyi cevabı

1

Yaklaşan Destek

  • Henüz mevcut olmayan Xcode 13.2 beta 3'e destek eklendi.

Geçici Düzeltme

Tamam, girişimlerime dayanarak, .submitLabel(...) TextEditor ile çalışmaz. Eklediğiniz olası bir çözüm var Text(...) bir alt görünüm olarak TextEditor(...) ama bu son derece jenk ve bunu tavsiye etmem. Bununla birlikte, iOS 13 için bulduğum bir çözüm var, bu da texteditor'un çalıştığı ve kullanması gerektiği gibi çalışıyor gibi görünüyor UIViewRepresentable. Neyse ki uygulanması çok kolay. Bu yapıyı oluşturun.

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

Sonra bu görünümü kullanacağınız gibi kullanın TextView() özelliklerini atadığınız yer. Bu etkili bir şekilde kenara çekiyor UIKit textView sürümü, bu nedenle özellikleri aynı olacaktır. Bu noktada fantezi alabilir ve SwiftUİ ve UIKit özelliklerini ve değiştiricilerini karıştırabilirsiniz.

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

Bir iOS 13 çözümü olmasının dezavantajı var mı? Projemin geri kalanı iOS 15'i hedef alıyor.
John Sorensen

Tek "Dezavantajı" UIViewRepresentable ile uğraşmak zorunda kalıyor ancak en kolay çözüm gibi görünüyor. Kullanan kendi özel görünümünüzü oluşturma seçeneğiniz vardır Text(...) ve kullan @ViewBuilder gittiğiniz gibi bir görünüm oluşturmak için, ama bunun değeri için çok fazla çaba sarf ettiğini hissediyorum.
xTwisteDx

@xTwisteDx: Kullanmanın herhangi bir nedeni var mı UIViewRepresentableContext<Self>yerine Context?
swiftPunk

Diğer dillerde

Bu sayfa diğer dillerde

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