我有一个带有日期选择器的文本字段。我用以下代码创建了日期选择器。
func createPicker(with type: UIDatePicker.Mode) -> UIDatePicker {
let datePicker = UIDatePicker(frame: CGRect(x: 0, y: 0, width: 400, height: 216))
datePicker.datePickerMode = type
datePicker.backgroundColor = UIColor.appColor(.bgFront)!
datePicker.setValue(UIColor.appColor(.mainText)!, forKey: "textColor")
return datePicker
}
我的UITextField
由自定义类创建。我已经实现了以下在日期选择器上方添加工具栏的方法。
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 300, height: 100))
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Ok", style: .plain, target: self, action: #selector(doneClick(_:)))
doneButton.tag = withTagNumber
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelClick(_:)))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: true)
toolBar.isUserInteractionEnabled = true
self.inputAccessoryView = toolBar
然后在我的viewDidLoad
方法中实现了callTimeTf.inputView = timePicker
。这样,当我单击相关的UITextField
时,它会显示我的日期选择器。到这里都还好。另外,在同一页面中,我有2个按钮用于显示另一个视图控制器。但是,当我单击这些按钮之一时,我的UIPickerView
没有隐藏或从视图层次结构中删除。我尝试过view.endEditing(true)
和callTimeTf.resignFirstResponder()
仍然保留在我的视图控制器上。我还尝试了picker.removeFromSuperview()
,它删除了选择器,但没有删除我在UITextField
内创建的工具栏。我不想将其从视图中删除,因为当我返回UIViewController()
时,我将再次使用它。当提供另一个视图控制器或关闭现有视图控制器时,如何隐藏timePicker?