Как автоматически установить фокус на недавно добавленное Textfield в рамках Swiftui.IOS

Программируем под IOS
Ответить
Anonymous
 Как автоматически установить фокус на недавно добавленное Textfield в рамках Swiftui.

Сообщение Anonymous »

Я хотел бы использовать .sheet для представления некоторого контента. Этот контент включает в себя текстовое поле , которое не сразу видно, но переключается кнопкой. Как только появится Textfield , он должен быть автоматически сфокусирован. Использование того же кода за пределами .sheet работает нормально.
Есть идеи, как это решить?
struct FocusDemo: View {
@State private var isPresented: Bool = false

@State private var showTextField: Bool = false
@State private var text: String = ""
@FocusState private var isTextFieldFocused: Bool

var body: some View {
Button("Show Sheet") {
isPresented = true
}
.sheet(isPresented: $isPresented) {
VStack {
Button("Show TextField") {
isTextFieldFocused = true

// Solution 1
showTextField = true
}

if showTextField {
TextField("New Value", text: $text)
.focused($isTextFieldFocused)

.onAppear {
// Solution 2
//showTextField = true

// Solution 3
/*DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
print("Set Focus")
showTextField = true
}*/
}
}
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... iftui-shee
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»