检测用户何时点击或保存 DatePicker

Detect when user taps out of or saves on DatePicker

当用户从 DatePicker 中选择时间时,我正在尝试通过网络调用获取一些数据。

我最初使用 .onChange 进行了测试,但每次更改时都会触发,而不是在最后一次点击时触发。

DatePicker("Title", selection: $currentDate, displayedComponents: .hourAndMinute)
  .onChange(of: $currentDate) { value in
    print(value)
  }

我也尝试过使用 didset{},但它也会在每次更改时触发。

@Published var currentDate: Date = Date() {
  didSet { print(currentDate) }
}

我想做的是一旦用户选择了一个时间,我就触发一些功能。我不想在车轮的每个周期都这样做。

有没有办法在导入 SwiftUI 的 SwiftUI 或 UIKit 中执行此操作?

请看附件:

您可以尝试滚动自己的 DatePickerView,例如这种方法:

struct ContentView: View {
    @State private var birthdate = Date()

    var body: some View {
            DatePickerView(date: $birthdate)
    }
}

struct DatePickerView: View {
    @Binding var date: Date
    @State var hasChanged = false
    
    var body: some View {
        ZStack {
            Color.white.opacity(0.01).ignoresSafeArea()
                .onTapGesture {
                    if hasChanged {
                        print("---> do a network call now with: \(date)")
                        hasChanged = false
                    }
                }
            DatePicker("Birth Date", selection: $date, displayedComponents: .hourAndMinute)
                .pickerStyle(.wheel)
                .onChange(of: date) { val in
                    hasChanged = true
                }
        }
    }
}