代码之家  ›  专栏  ›  技术社区  ›  Krunal

UIPickerView作为多个UITextFields的inputView

  •  0
  • Krunal  · 技术社区  · 6 年前

    UITextField 在我的代码和单身中 UIPickerView inputView 所有文本字段的名称。

    我想确定在 UIPickerViewDelegate 方法 pickerView(_:didSelectRow:inComponent:)

    let tf1: UITextField()
    let tf2: UITextField()
    let tf3: UITextField()
    let pcv: UIPickerView()
    
    
    tf1.inputView = pcv
    tf2.inputView = pcv
    tf3.inputView = pcv
    
    
    // Picker view delegate
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if (tf1.isFirstResponder) {
           print("tf1")
        } else if (tf2.isFirstResponder) {
           print("tf2")
        } else if (tf3.isFirstResponder) {
           print("tf3")
        } else {
           print("Any other view")
        }
    
    }
    

    有没有其他更好的方法来处理这个问题?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Anbu.Karthik    6 年前

    在textfield代理上,为textfield分配inputview和标记

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
       textField.inputView = pcv
       pcv.tag =  textField.tag
        return true;
    }
    

    最后,获取pickerview的标签,用于标识您点击的文本字段。

     func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
            print("pickerView == \(pickerView.tag)")
    
    }