【问题标题】:On tapping UITextField, DatePicker is appearing在点击 UITextField 时,出现 DatePicker
【发布时间】:2021-08-06 03:52:59
【问题描述】:

已经在 UITableViewCell 中实现了 DatePicker,当表格在点击显示 DatePicker 时滚动一些随机的 UITextfields,如何解决这个问题,请指导。以下是我的代码:

// 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)
    
}

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

【问题讨论】:

    标签: ios swift uitableview datepicker


    【解决方案1】:

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

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

    【讨论】:

    • 是的,已经做到了,部分检查是在 cellForRowAt 中实现的:因此将标签 22 用于索引 2
    • 能否粘贴所有的 cellForRowAt: 代码
    猜你喜欢
    • 2014-06-14
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多