SwiftUI – Как сфокусировать TextField на листе по мере его появления?IOS

Программируем под IOS
Anonymous
SwiftUI – Как сфокусировать TextField на листе по мере его появления?

Сообщение Anonymous »

У меня есть текстовое поле поиска в представлении, которое отображается на листе поверх ContentView.
Я могу автоматически сфокусируйте это TextField, когда лист появляется, используя @FocusState и onAppear, однако я обнаружил, что лист должен полностью появиться, прежде чем TextField будет сфокусирован и включен появится экранная клавиатура.
Это происходит довольно медленно, и я заметил, что во многих других приложениях они могут одновременно запускать экранную клавиатуру и лист.
Вот мой код:

Код: Выделить всё

struct ContentView: View {
@State var showSearch = false

var body: some View {
Button {
showSearch = true
} label: {
Text("Search")
}
.sheet(isPresented: $showSearch) {
SearchView()
}
}
}

struct SearchView: View {
@State var searchTerm = ""
@FocusState private var searchFocus: Bool

var body: some View {
TextField("Search", text: $searchTerm)
.focused($searchFocus)
.onAppear() {
searchFocus = true
}
}
}
Есть ли другой способ сделать это, чтобы клавиатура отображалась при появлении листа, что сделало бы общее взаимодействие более плавным?

Подробнее здесь: https://stackoverflow.com/questions/752 ... -appearing

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