SwiftUI @FocusState при появлении представления

#swiftui

#свифтуи

Вопрос:

Как я могу сосредоточиться на определенном текстовом поле при появлении представления? У меня есть базовая форма, в которой я хочу, чтобы поле заголовка было сфокусировано при отображении модального. У меня есть следующий код, который достигает этого, но должен быть более чистый/лучший способ. Могу ли я установить начальное значение a @FocusState var в поле или логическое значение, которое затем выбирает текстовое поле при появлении представления?

 var body: some View {  NavigationView {  VStack {  Form {  TextField("Title", text: $viewModel.title)  .focused($titleIsFocused)  }  }  .navigationBarTitle("New List")  .onAppear {  DispatchQueue.main.asyncAfter(deadline: .now()   0.6) {  titleIsFocused = true  }  }  }  } }  

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

1. Не то, чтобы я видел. Было много твитов об этой проблеме, и ваш код-это ответ, который они придумали.

2. Ладно, я так и думал. Я просто хотел убедиться, что я не сумасшедший….это похоже на полную неудачу со стороны Apple, но ладно.

3. Я вчера читал твит, где кто-то удивлялся, как много вещей в SwiftUI было решено DispatchQueue.main.asyncAfter(deadline:) . Я надеюсь, что кто-нибудь найдет ответ…

4. Да, ну onAppear на самом деле называется, когда View он добавляется в график памяти, а не когда он на самом деле появляется на экране, что, вероятно, является причиной путаницы для многих из нас.

5. Не столько замешательство, сколько раздражение. Попробуйте определить, когда видна определенная строка списка…