在应用程序中,当我点击应该给我一个UITextField
的{{1}}时,在将iPhone更新为UIDatePicker
时没有显示UIDatePicker
。 适用于iOS 13
版本。
我正在研究最新的iOS 12+
和Xcode 11
这是我正在使用的代码:
macOS Mojave 10.14.6
答案 0 :(得分:0)
这对我有用: 初始化:让picker = UIDatePicker() 并在viewDidLoad中调用createToolbar函数
func createToolbar() {
let toolbar = UIToolbar()
toolbar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Set Date", style: .done, target: nil, action: #selector(showDate))
toolbar.setItems([doneButton], animated: false)
fromDateTextField.inputAccessoryView = toolbar
fromDateTextField.inputView = picker
toDateTextField.inputAccessoryView = toolbar
toDateTextField.inputView = picker
picker.datePickerMode = .date
}
@objc func showDate() {
let dateFormat = DateFormatter()
dateFormat.dateFormat = "dd-MM-yyyy"
let string = dateFormat.string(from: picker.date)
if fromDateTextField.isFirstResponder {
fromDateTextField.text = string
}
if toDateTextField.isFirstResponder {
toDateTextField.text = string
}
self.view.endEditing(true)
}
谢谢@rmmaddy的投入:)
答案 1 :(得分:-1)
class ViewController: UIViewController {
@IBOutlet weak var dateField: UITextField!
var datePicker :UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
datePicker = UIDatePicker.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 200))
datePicker.addTarget(self, action: #selector(self.dateChanged), for: .allEvents)
dateField.inputView = datePicker
let doneButton = UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(self.datePickerDone))
let toolBar = UIToolbar.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 44))
toolBar.setItems([UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil), doneButton], animated: true)
dateField.inputAccessoryView = toolBar
}
@objc func datePickerDone() {
dateField.resignFirstResponder()
}
@objc func dateChanged() {
dateField.text = "\(datePicker.date)"
}
}
尝试