观察UIDatePicker中的更改

Chr*_*ris 37 objective-c uidatepicker key-value-observing ios

我注意到没有代表观察UIDatePicker中的更改.有没有办法检测何时在选择器中进行更改而不确认任何内容,例如它旋转并落在我希望能够检测到的新数字上的那一刻.我考虑过关键值观察,但我不认为有一个属性会在现场发生变化

chr*_*man 66

您需要向UIDatePicker添加UIControlEventValueChanged事件以处理日期更改:

[myDatePicker addTarget:self action:@selector(dateIsChanged:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)

然后执行:

- (void)dateIsChanged:(id)sender{
     NSLog(@"Date changed");
}
Run Code Online (Sandbox Code Playgroud)

  • Swift版本:`picker.addTarget(self,action:#selector(dateChanged),forControlEvents:.ValueChanged)@objc func dateChanged(sender:UIDatePicker){print(sender.date.description)}` (3认同)

Dus*_*tin 42

转到IB并从UIDatePicker您的.h文件拖动.然后选择在此输入图像描述

在你的.m文件中处理这个你想要的; XCode将为您添加以下方法.

在此输入图像描述


Arg*_*gus 8

斯威夫特 4.2 | Xcode 10.1

@objc func handleDatePicker(_ datePicker: UIDatePicker) {
    textField.text = datePicker.date.formatted
}

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker.addTarget(self, action: #selector(handleDatePicker), for: .valueChanged)
}
Run Code Online (Sandbox Code Playgroud)
extension Date {
    static let formatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "EEEE, dd MMM yyyy HH:mm:ss Z"
        return formatter
    }()
    var formatted: String {
        return Date.formatter.string(from: self)
    }
}
Run Code Online (Sandbox Code Playgroud)