点击UITextField时,会出现DatePicker



已经在UITableViewCell中实现了DatePicker,当表在点击时滚动一些随机的UITextField显示DatePicker时,请指导如何修复。以下是我的代码:

// Inside cellForeRowAt:
if (indexPath.row == 4) {
cell.txtFieldValue.tag = 24
cell.txtFieldValue.addTarget(self, action: #selector(self.dp(_:)), for: .editingDidBegin)
nCell.txtFieldValue.keyboardToolbar.doneBarButton.setTarget(self, action: #selector(doneButtonClicked))
}
@IBAction func dp(_ sender: UITextField) {
if (sender.tag == 22 || sender.tag == 24) {
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = .date
datePickerView.maximumDate = Date()
sender.inputView = datePickerView

if #available(iOS 13.4, *) {
datePickerView.preferredDatePickerStyle = .wheels
} else {
// Fallback on earlier versions
}

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"
let now = Date()
let dateString = dateFormatter.string(from:now)

let selectedDate = dateFormatter.date(from: dateString)
datePickerView.setDate(selectedDate!, animated: true)

if(sender.tag == 24) {
datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)

} else if(sender.tag == 22) {
datePickerView.addTarget(self, action: #selector(handleDOBDatePicker(sender:)), for: .valueChanged)

}
}
print("tag: ", sender.tag)
}
@objc func handleDatePicker(sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"
selectedEffectiveDate = dateFormatter.string(from: sender.date)
print(selectedEffectiveDate as Any)

}

这里的问题是,其他一些应该打开键盘的文本字段也打开了日期选择器,但不是所有的文本字段。我没有得到什么原因请引导

如果您有多个节,则从每个节的开头开始进行行编号。根据您在上面添加的代码,DatePicker将在每个部分的每5行打开。因此,DatePicker在您将在表视图中看到的第5行之后打开是正常的。如果您只想在第一节的第5行打开DatePicker,您还必须添加检查,以确保它是第一节,也就是indexPath.section==0。

if indexPath.section == 0 && indexPath.row == 4 { ... }

最新更新