Ios 如何在编辑其他字段时自动折叠表单中的日期选择器?

Ios 如何在编辑其他字段时自动折叠表单中的日期选择器?,ios,swift,xcode,swiftui,Ios,Swift,Xcode,Swiftui,我得到了一个简单的快捷界面视图: import SwiftUI struct AddItemView: View { @State private var title = "" @State private var date = Date() var body: some View { Form { Section { TextField("Title", text: $title)

我得到了一个简单的快捷界面视图:

import SwiftUI

struct AddItemView: View {
    @State private var title = ""
    @State private var date = Date()

    var body: some View {
        Form {
            Section {
                TextField("Title", text: $title)
                DatePicker(
                    selection: $date,
                    in: Date()...,
                    displayedComponents: .date,
                    label: { Text("Date") }
                )
            }
        }
    }
}

struct AddItemView_Previews: PreviewProvider {
    static var previews: some View {
        AddItemView()
    }
}
我正在努力实现以下目标:
如果
DatePicker
展开(用户点击日期选择器,选择器显示轮子以选择日期),然后开始在
TextField
中键入文本,
DatePicker
应自动切换到初始最小化模式(仅显示标签和选定日期)。请看截图。这是stock Calendar.app中的一种行为,例如,在创建事件时


感谢您的帮助。

这里是可能的方法。其思想是为每个导致编辑的事件重置
DatePicker
组件

使用Xcode 11.4/iOS 13.4进行测试

struct AddItemView: View {
    @State private var title = ""
    @State private var date = Date()
    @State private var pickerReset = UUID()

    var body: some View {
        Form {
            Section {
                TitleTextField()

                DatePicker(
                    selection: $date,
                    in: Date()...,
                    displayedComponents: .date,
                    label: { Text("Date") }
                ).id(self.pickerReset)
            }
        }
    }

    private func TitleTextField() -> some View {
        let boundText = Binding<String>(
            get: { self.title },
            set: { self.title = $0; self.pickerReset = UUID() }
        )
        return TextField("Title", text: boundText, onEditingChanged: { editing in
            if editing {
                self.pickerReset = UUID()
            }
        })
    }
}
struct AddItemView:View{
@国家私有var title=“”
@国家私有变量日期=日期()
@国家私有变量pickerReset=UUID()
var body:一些观点{
形式{
部分{
TitleTextField()
日期选择器(
选择:$date,
in:Date()。。。,
displayedComponents:。日期,
标签:{Text(“日期”)}
).id(self.pickerReset)
}
}
}
private func TitleTextField()->某些视图{
让boundText=绑定(
获取:{self.title},
集合:{self.title=$0;self.pickerReset=UUID()}
)
return TextField(“Title”,text:boundText,onEditingChanged:{在中编辑
如果编辑{
self.pickerReset=UUID()
}
})
}
}