【发布时间】:2021-10-22 05:37:18
【问题描述】:
我在 fromDateTf 和 toDateTf 文本字段中使用datePicker。现在我需要禁用 toDateTf 的日期选择器交互(意味着不应选择日期)如果 fromDateTf textfield 文本为空.. 怎么办?
日期选择器
let screenWidth = UIScreen.main.bounds.width
let datePicker = UIDatePicker(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 216))
class PostServiceRequestVC: UIViewController, UITextViewDelegate {
@IBOutlet weak var toDateTf: UITextField!
@IBOutlet weak var fromDateTf: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
fromDateTf.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed), tag: 0)
toDateTf.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed), tag: 1)
}
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let arr = [fromDateTf,toDateTf]
let current = arr[sender.tag]
if let datePicker = current?.inputView as? UIDatePicker {
current?.text = dateFormatter.string(from: datePicker.date)
current?.resignFirstResponder()
}
}
extension UITextField {
func addInputViewDatePicker(target: Any, selector: Selector, tag: Int) {
datePicker.datePickerMode = .date
self.inputView = datePicker
if #available(iOS 13.4, *) {
datePicker.preferredDatePickerStyle = .wheels
datePicker.sizeToFit()
}
let todaysDate = Date()
datePicker.minimumDate = todaysDate
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 44))
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelPressed))
let doneBarButton = UIBarButtonItem(title: "Done", style: .plain, target: target, action: selector)
toolBar.setItems([cancelBarButton, flexibleSpace, doneBarButton], animated: false)
doneBarButton.tag = tag
self.inputAccessoryView = toolBar
}
@objc func cancelPressed() {
self.resignFirstResponder()
}
}
使用上面的代码,我可以为两个文本字段选择日期.. 但是
这里的 fromDateTf.text 是空的,所以想禁用 toDateTf 的日期选择器的交互
我希望用户首先选择 fromdate.. 没有 fromdate 我不想授予选择 todate 的访问权限如何?...请帮助我
编辑:根据下面的答案,如果我在viewDidLoad 中添加该代码,那么toDateTf 一直阻止我显示日期选择器并选择日期
所以我在doneButtonPressed 中添加了该代码,所以在这里我第一次可以显示日期选择器并选择日期.. 但是从第二次开始,如果fromDateTf 为空,则可以工作.. 但它不工作第一次..第一次如果fromDateTf为空,那么toDateTf.isEnabled = false应该可以工作..如何实现请帮忙。
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let arr = [fromDateTf,toDateTf]
let current = arr[sender.tag]
if let datePicker = current?.inputView as? UIDatePicker {
if fromDateTf.text?.isEmpty ?? true {
toDateTf.isEnabled = false
} else {
toDateTf.isEnabled = true
}
current?.text = dateFormatter.string(from: datePicker.date)
current?.resignFirstResponder()
}
}
【问题讨论】:
标签: swift datepicker textfield