Ser*_*nov 5 datepicker toolbar storyboard swift ios14
工具栏高于日期选择器,这是一个错误吗?或者我做错了什么?
我的代码:
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
let datePicker = UIDatePicker()
override func viewDidLoad() {
super.viewDidLoad()
showDatePicker()
}
func showDatePicker(){
//Formate Date
datePicker.datePickerMode = .date
datePicker.preferredDatePickerStyle = .compact
//ToolBar
let toolbar = UIToolbar();
toolbar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(donedatePicker));
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker));
toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false)
textField.inputAccessoryView = toolbar
textField.inputView = datePicker
}
@objc func donedatePicker(){
let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy"
textField.text = formatter.string(from: datePicker.date)
self.view.endEditing(true)
}
@objc func cancelDatePicker(){
self.view.endEditing(true)
}
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道我可以回到 preferredDatePickerStyle = .wheels,但很有趣,为什么它会像这样
小智 11
您可以从这里实现您的要求
目标 C
if (@available(iOS 13.4, *)) {
datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;
[datePicker sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)
在斯威夫特
if #available(iOS 13.4, *) {
datePicker.preferredDatePickerStyle = .wheels
datePicker.sizeToFit()
}
Run Code Online (Sandbox Code Playgroud)
小智 -1
修复了这个问题。我尝试了下面的代码。
希望它对您有帮助。祝你好运!
datePicker.datePickerMode = UIDatePicker.Mode.date
let gregorian: NSCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let currentDate: NSDate = NSDate()
let components: NSDateComponents = NSDateComponents()
components.year = -1
let minDate: NSDate = gregorian.date(byAdding: components as DateComponents, to: currentDate as Date, options: NSCalendar.Options(rawValue: 0))! as NSDate
datePicker.minimumDate = minDate as Date
if #available(iOS 13.4, *) {
datePicker.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 72.0)
} else {
// Fallback on earlier versions
}
dateField.inputView = datePicker
let toolbar = UIToolbar();
toolbar.sizeToFit()
//done button & cancel button
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.done, target: self, action: #selector(ReservationTableViewController.doneDatePicker))
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItem.Style.plain, target: self, action: #selector(ReservationTableViewController.cancelDatePicker))
toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false)
// add toolbar to textField
self.dateField.inputAccessoryView = toolbar
datePicker.addTarget(self, action: #selector(ReservationTableViewController.datePickerValueChanged), for: UIControl.Event.valueChanged)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |