Установка фокуса TextField в macOS SwiftUI - PullRequest
1 голос
/ 23 февраля 2020

Я создал простой модальный диалог macOS в SwiftUI, который принимает от пользователя некоторый текст:

enter image description here

Это представлено через Storyboard Segue от пункт меню для NSWindowController, который содержит NSHostingController:


class
OpenLocationController: NSHostingController<OpenLocationView>
{
    @objc
    required
    dynamic
    init?(coder: NSCoder)
    {
        let view = OpenLocationView()
        super.init(coder: coder, rootView: view)
    }
}

struct
OpenLocationView : View
{
    @State private var location: String = ""

    var body: some View
    {
        VStack
        {
            HStack
            {
                Text("Location:")
                TextField("https://", text: $location) { self.openLocation() }
            }

            HStack
            {
                Spacer()
                Button("Cancel") { self.dismiss() }
                Button("Open") { self.simulateClick() }
            }
        }
        .padding()
        .frame(minWidth: 500.0)
    }
}

Снимок экрана раскадровки:

enter image description here

Я хотел бы автоматически сфокусировать текстовое поле и выделить весь текст в нем при отображении диалогового окна. Я также хотел бы, чтобы клавиша Tab фокусировалась на нем (по какой-то причине это тоже не работает, хотя это было бы спорным, если бы я мог просто сфокусировать его на дисплее). Как бы я сделал это в SwiftUI?

...