gpt4 book ai didi

ios - 如何在编辑其他字段时自动折叠表单中的 DatePicker?

转载 作者:行者123 更新时间:2023-12-01 19:33:39 24 4
gpt4 key购买 nike

我得到了一个简单的 SwiftUI View :

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应自动切换到初始最​​小化模式(仅显示标签和选定日期)。请看一下截图。这是股票 Calendar.app 中的一种行为,例如,在创建事件时。

enter image description here

任何帮助表示赞赏,谢谢。

最佳答案

这是可能的方法。这个想法是重置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()
}
})
}
}

关于ios - 如何在编辑其他字段时自动折叠表单中的 DatePicker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61041209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com