UIPickerView как входное представление нескольких UITextFields - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть три UITextField s в моем коде и один UIPickerView , как в inputView всех текстовых полей.

Я хочу идентифицировать, какое текстовое поле вызвало / открыло UIPickerView, внутри UIPickerViewDelegate * метод 1010 * 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")
    }

}

Есть ли другой лучший способ справиться с этим?

(Цель C или Swift, любое решение)

1 Ответ

0 голосов
/ 08 февраля 2019

в вашем делегате текстового поля назначьте 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)")

}
...