所以我把日期选择器设置为
func configurePicker()
{
pickerContainer.frame = CGRectMake(0.0, 600.0, 320.0, 300.0)
pickerContainer.backgroundColor = UIColor(red: 6/225.0, green: 232/225.0, blue: 255/225.0, alpha: 0)
picker.frame = CGRectMake(0.0, 20.0, 320.0, 300.0)
let dateComponents = NSDateComponents()
dateComponents.year = -18
let dateComponents2 = NSDateComponents()
dateComponents2.year = -60
picker.maximumDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: NSDate(), options: nil)
picker.minimumDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents2, toDate: NSDate(), options: nil)
picker.setDate(picker.maximumDate!, animated: true)
picker.datePickerMode = UIDatePickerMode.Date
pickerContainer.addSubview(picker)
}
正如你所知,我已经设定了最短和最长的日期。我还有一个我没有包括的解雇功能。我的问题是,当用户低于最小值和高于最大值时,我如何才能发现?我想做的是当用户低于最小值时在后台播放gif,当用户高于最大值时单独播放gif?有没有一种方法可以告诉用户在日期选择器轮子上的位置?我知道日期选择器轮子重置超过了最小值和最大值,但我只想知道是否有一种方法可以在不让用户放手的情况下知道轮子的日期。例如,一个像这样的条件语句工作
if(picker.date > picker.maximumDate)
{
playgif1()
}
else if(picker.date < picker.minimumDate)
{
playgif2()
}
上面的比较不起作用,这给了我一个错误,一直说找不到'>'或'<'的重载
感谢您的帮助
据我所知,除非Apple添加了新的API UIDatePicker(通常是UIPickerView),否则没有从中获取滚动事件的方法。
我认为你能做的最好的事情就是向ValueChanged事件的选择器添加一个目标方法,当用户停止滚动日期时,它会调用一个方法。
func configurePicker() {
//...other configuration
picker.addTarget(self, action: "datePicked:", forControlEvents: UIControlEvents.ValueChanged)
}
func datePicked(picker: UIDatePicker) {
// compare dates
}