【发布时间】:2019-05-27 11:42:09
【问题描述】:
我正在编写一个应用程序,当单击 UIExView 时会打开一个 UIDatePicker。我希望 UIDatePicker 在 UITextView 下方弹出,而不是从底部作为键盘出现。
我刚开始做 IOS 应用开发,希望有人能帮助我。
datePicker = UIDatePicker
和
inputTextfield = UITextField
我的代码:
//Function to create the datepicker
func createDatePicker(){
//create instance of the datepicker
datePicker = UIDatePicker()
//sets format, so only day month and year can be selected
//datePicker?.datePickerMode = .date
datePicker?.backgroundColor = .white
datePicker?.addTarget(self, action: #selector(ViewController.dateChanged(datePicker:)), for: .valueChanged)
//to limit the datepicker, you can not pick a date older than yesterday
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())
datePicker?.minimumDate = yesterday
datePicker?.minuteInterval = 30
let loc = Locale(identifier: "de")
datePicker?.locale = loc
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.viewTapped(gesturRecognizer:)))
view.addGestureRecognizer(tapGesture)
inputTextfield.inputView = datePicker
//create a toolbar
let toolbar = UIToolbar()
toolbar.sizeToFit()
//add done button to the toolbar
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(doneClicked))
toolbar.setItems([doneButton], animated: true)
inputTextfield.inputAccessoryView = toolbar
}
//function to select a date
@objc func dateChanged(datePicker: UIDatePicker){
//selected date by the user
let dateFormate = DateFormatter()
//Jonas das ist vllt für dich relevant, man kann es so verändern wie man will
dateFormate.dateFormat = "MM/dd/yyyy"
inputTextfield.text = dateFormate.string(from: datePicker.date)
}
//function to close the datepicker, when tapping on the inputText again -handler method
@objc func viewTapped(gesturRecognizer: UITapGestureRecognizer){
view.endEditing(true)
}
//function to close the datepicker when clicking on the done button
@objc func doneClicked(){
self.view.endEditing(true)
}
【问题讨论】:
-
I want the datepicker to pop up underneath the TextView是什么意思? -
将
UIView放在您的 textview 下并将日期选择器添加到该视图中,当您开始输入 textview (textView: didiBeganEditing) 时,根据您的要求管理框架或约束或隐藏/显示。所以它不会像键盘一样从底部打开。
标签: ios swift uidatepicker