Содержимое, не отображаемое в текстовых полях при редактировании в SwiftUI Xcode 13 iOS15

#ios #xcode #swiftui

Вопрос:

Я недавно обновил Xcode с 12.5 (iOS14) до Xcode 13 (iOS15), и мои проекты больше не отображают содержимое TextFields при редактировании информации в форме. Например, давайте на мгновение представим, что при редактировании информации в a используется следующий код Form , и вы хотите показать имя Jason в текстовом поле, как только загрузятся представления, чтобы пользователь знал, что он/она редактирует. В Xcode 12.5 (iOS14) следующий код будет отображаться Jason сразу после появления формы, в Xcode 13 (iOS15) имя не отображается, пока вы не нажмете на текстовое поле.

Кто-нибудь видел это? Есть ли какое-то решение?

 struct TestingTextFields: View {

    @State private var inputName:String = ""

    var body: some View {
        Form{
            TextField("Enter Name", text:$inputName)
        }
        .onAppear(perform: {
            self.inputName = "Jason" // name doesn't show until user taps on the textField
        })
    }
}
 

Комментарии:

1. Интересно посмотреть на поведение, одним из решений может быть применение onAppear модификатора прямо на вашем TextField

2. Вы правы, добавление onAppear модификатора непосредственно в поля делает трюк. Спасибо!

3. Отлично работает как есть с Xcode 13.0 (13A233)

4. Для вашей информации, ваш код, как показано, не работает для меня на macos 12.beta9, скомпилированный с использованием xcode-beta5 (13A5212g), предназначенный для ios 15 и macCatalyst. Работает для меня только в приложении macos 12.beta9. Протестировано на реальных устройствах iMac и iPhone с ios15. Работает везде, если вы «прикрепляетесь» onAppear к TextField .

5. @Asperi — Хм, это странно, я также использую Xcode 13 (13A233) и не работаю ни на симуляторе, ни на устройстве. @ workingdog — спасибо за информацию.