ios - 带有日期选择器的文本字段在日期快速更改时崩溃

标签 ios swift xcode datepicker textfield

我在设置文本字段时遇到问题。目标不是键盘,我希望它有滑轮来指示时间。所以在 viewDidLoad() 里面我放了:

let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.time
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)
textField.inputView = datePicker

在 ViewController() 中我放了:

@objc func datePickerValueChanged(sender: UIDatePicker) {
    let DatePickerView: UIDatePicker = UIDatePicker()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm"
    textField.text = dateFormatter.string(from: DatePickerView.date)
}

现在这看起来很适合打开文本字段,时间滚动条会立即弹出,看起来很棒(哇哦!)。但是当我更改时间时,应用程序崩溃(NSException)。我知道这通常发生在未正确设置连接时,但我无法弄清楚 textFieldSelector 应该触发什么连接 datePickerValueChanged。场景加载正常,就在我更改日期时,我得到了 NSException。

我也试过带/不带@objc函数标签

我找到了其他三个类似问题的解决方案,但它们似乎对我不起作用(可能已过时)。链接:

UIDatePicker crashing application

Inputting DatePicker in TextField problems

UITextField with DatePicker crashes

任何想法/想法将不胜感激。

最佳答案

要修复崩溃,请从

更改您的选择器
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)

datePicker.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)

在你的方法中:

@objc func datePickerValueChanged(_ sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = "hh:mm a" // or "HH:mm"
    textField.text = dateFormatter.string(from: sender.date)
}

关于ios - 带有日期选择器的文本字段在日期快速更改时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795671/

相关文章:

ios - requestRecordPermission 什么都不做

ios - 返回类型 "() "是什么?

ios - 注销并重新登录时出现窗口层次结构错误

ios - 应用程序崩溃, "Lost Connection"

ios - 在 iOS 中的 TextView 中对齐阿拉伯文本

ios - 为什么这个简单的不透明动画在 SwiftUI 中不起作用?

ios - 解析在单个查询中加载多个 PFFile 图像

ios - 适用于 iOS 和 macOS 的 Swift 框架

xcode - 如何使用 box2d 使 b2body 以恒定速度移动

iOS swift : EXC_BAD_INSTRUCTION