UIPickerView 作为多个 UITextField 的 inputView
UIPickerView as an inputView of multiple UITextFields
我有三个 UITextFields in my code and single UIPickerView as in inputView 所有文本字段。
我想确定 UIPickerViewDelegate method pickerView(_:didSelectRow:inComponent:).
中哪个文本字段具有 invoked/opened UIPickerView
这是我试过的示例代码:
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")
}
}
有没有其他更好的方法来处理这个问题?
(Objective C 或 Swift,任意解)
在您的文本字段委托上为您的文本字段分配输入视图和标签
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)")
}
我有三个 UITextFields in my code and single UIPickerView as in inputView 所有文本字段。
我想确定 UIPickerViewDelegate method pickerView(_:didSelectRow:inComponent:).
中哪个文本字段具有 invoked/opened UIPickerView这是我试过的示例代码:
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")
}
}
有没有其他更好的方法来处理这个问题?
(Objective C 或 Swift,任意解)
在您的文本字段委托上为您的文本字段分配输入视图和标签
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)")
}