我想显示一个工作表,并在显示工作表时立即将文本字段置于焦点中,以便用户可以立即开始输入,而无需单独点击工作表。
我已经尝试过此线程中的解决方案: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)
看起来这应该非常简单并且是一个常见的用例。我怎样才能实现这个目标?
看来你需要延迟一下才能集中注意力
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)