Ios 如何自动推进datePicker中的其他字段?
假设我有一个UIDatePicker,模式设置为.date。 我想要以下行为: 例如,三月有30天。如果我滚动到30天以下,我希望月份自动增加到4月,依此类推 有这样的房产吗?我找不到Ios 如何自动推进datePicker中的其他字段?,ios,uidatepicker,Ios,Uidatepicker,假设我有一个UIDatePicker,模式设置为.date。 我想要以下行为: 例如,三月有30天。如果我滚动到30天以下,我希望月份自动增加到4月,依此类推 有这样的房产吗?我找不到 谢谢。我不认为用一个普通的UIDatePicker可以做你想做的事。您可以将操作附加到valueChanged事件,但直到日期选择器停止移动,才会调用该操作 您可能可以使用标准的UIPickerView创建自定义日期选择器。您可以使用数据源方法确定轮子何时转动,调用selectedRowinComponent:确
谢谢。我不认为用一个普通的UIDatePicker可以做你想做的事。您可以将操作附加到valueChanged事件,但直到日期选择器停止移动,才会调用该操作 您可能可以使用标准的UIPickerView创建自定义日期选择器。您可以使用数据源方法确定轮子何时转动,调用selectedRowinComponent:确定为每个轮子选择了哪些值,然后调用selectRow_uU2;:inComponent:animated以在用户滚动月底后的一天时切换月份 如何自动推进datePicker中的其他字段 最好的方法是使用基本上,当用户选择一个新的日期操作时,目标视图会做一些事情 下面是一些代码,如果将“日”值设置为0,则将其更改为1:
override func viewDidLoad() {
...
let datePicker = UIDatePicker()
datePicker.datePickerMode = .date
datePicker.addTarget(self, action: #selector(doStuff(sender:)), for: UIControlEvents.valueChanged)
view.addSubview(datePicker)
...
}
@IBAction func doStuff(sender: UIDatePicker) {
let calendar = Calendar.current
let components = calendar.dateComponents([.day], from: sender.date)
if components.day == 0 {
// Using Calendar.current automatically takes care of Time Zones for us.
if let date = calendar.date(byAdding: .day, value: 1, to: sender.date) {
sender.setDate(date, animated: true)
}
}
}
注:该示例在Swift 4中
不,据我所知,没有这样做的属性。问题是,直到日期选择器停止转动,选择器才调用valueChanged操作。如果你滚动到月底,并且日轮不停地转动,你不会得到通知。我认为您必须创建一个自定义选择器,正如我在回答中概述的那样,以获得OP所追求的效果。