当包含文本字段的工作表出现时,如何使文本字段成为焦点

sak*_*sak 2 swiftui combine

我想显示一个工作表,并在显示工作表时立即将文本字段置于焦点中,以便用户可以立即开始输入,而无需单独点击工作表。

我已经尝试过此线程中的解决方案:https://developer.apple.com/forums/thread/681962

但他们都没有工作。这是我当前的代码:

struct MySheet: View {
    @State var text: String
    @FocusState var focusedField: FocusField?
    var body: some View {
        VStack {
            TextField("", text: $text)
                .focused($focusedField, equals: .field)
                .padding()
                .task {
                    self.focusedField = .field
                }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来这应该非常简单并且是一个常见的用例。我怎样才能实现这个目标?

meo*_*meo 5

看来你需要延迟一下才能集中注意力

TextField("Text Field", text: $text)
    .focused($focusedField, equals: .field)
    .padding()
    .onAppear {
        DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) {
            self.focusedField = .field
        }
    }
Run Code Online (Sandbox Code Playgroud)