美文网首页
监控UIDatePicker滚动事件/date值的变化

监控UIDatePicker滚动事件/date值的变化

作者: 姬歌 | 来源:发表于2018-03-08 15:49 被阅读31次

由于UIDatePicker没有回调事件,所以不能通过回调获得date值的实时变化。
对于一些需要实时监控其date值的场景,可以通过以下方法实现实时监控:

override init(frame: CGRect) {
        super.init(frame: frame)
    ...
       let datePicker = UIDatePicker(frame: pickerFrame)
      datePicker.addTarget(self, action: #selector(datePickerValueChange(_ :)), for: UIControlEvents.valueChanged)
}

@objc func datePickerValueChange(_ picker: UIDatePicker) {
        debugPrint("datePickerValueChange........")
        if let dateStr = JKTools.stringFromDate(picker.date, format: "yyyy-MM-dd") {
            date_label.text = dateStr
        }
    }

需要注意的是,不能通过KVO来监控date值的变化。以下方式不能得到响应:

override init(frame: CGRect) {
        super.init(frame: frame)
    ...
        datePicker.addObserver(self, forKeyPath: "date", options: .new, context: &dpContext)
}

 deinit {
       datePicker.removeObserver(self, forKeyPath: "date", context: &dpContext)
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        debugPrint("observeValue........")//没有执行
    }

相关文章

网友评论

      本文标题:监控UIDatePicker滚动事件/date值的变化

      本文链接:https://www.haomeiwen.com/subject/xzryfftx.html