SwiftUI-在DatePicker中禁用显示/滚动到超出范围的日期

时间:2020-06-08 08:44:55

标签: ios swift datepicker swiftui

我的SwiftUI视图中有一个日期选择器。我希望日期选择器在日期的封闭范围内工作。

这是代码。


struct ContentView: View {

    @State var selectedDate: Date = Date(timeIntervalSince1970: 662731200)

    var body: some View {
        print("start date - \(startDate.inWords)")
        print("end date - \(endDate.inWords)")
        return DatePicker("", selection: $selectedDate,
                          in: startDate...endDate,
                          displayedComponents: .date)
            .labelsHidden()
    }

    var startDate: Date {
        Calendar.current.date(byAdding: .year, value: -60, to: Date()) ??
        Date() - Double(1892000000)
    }

    var endDate: Date {
        Calendar.current.date(byAdding: .year, value: -18, to: Date()) ??
        Date() - Double(567648000)
    }
}

extension Date {
    var inWords: String {
        let formatter = DateFormatter()
        formatter.dateStyle = .long
        return formatter.string(from: self)
    }
}

开始日期和结束日期如下打印在控制台中。

start date - June 8, 1960
end date - June 8, 2002

当我滚动到该范围之外的日期时,它将带我回到该范围内的最后一个日期。

enter image description here

是否可以防止滚动超出范围?

0 个答案:

没有答案