0

我发现一个相同的情况pickerView,我会说同样的话,如下所示:

当在里面单击a 时,我会pickerView弹出一个。textField用户在 中选择他们的位置pickerView,并将其放入textField.

打开 时pickerView,滑块位于第一个元素上,但如果我单击完成按钮以最小化pickerView,则没有选择任何元素(即您必须向下滚动并向后滚动才能选择第一个元素)

我可以制作 atextField和 a pickerView。但我有 3 个 textFields 和 3 个 pickerViews。我可以为每一个做pickerView吗?

下面的代码块,适用于一个。

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == yourTextField {
        self.yourPickerView.selectRow(0, inComponent: 0, animated: true)
        self.pickerView(yourPickerView, didSelectRow: 0, inComponent: 0)
    }
}
4

1 回答 1

0

您在评论中如何描述,如果前一个 textField 的文本不为空,您希望在用户单击特定 textField 时开始编辑 textField。所以使用这样textFieldShouldBeginEditing的委托方法:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    if textField == textField1 {
        return true
    } else if textField == textField2 && !textField1.isEmpty {
        return true
    } else if textField == textField3 && !textField2.isEmpty {
        return true
    }
    return false
}

然后,当 textField 开始编辑时显示特定的 pickerView

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == textField1 {
        // show pickerView1
    } else if textField == textField2 {
        // show pickerView2
    } else if textField == textField3 {
        // show pickerView3
    }
}

然后当用户选择行时,您要更改 textField 中的文本

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView == pickerView1 {
        textField1.text = items1[row]
    } else if pickerView == pickerView2 {
        textField2.text = items2[row]
    } else if pickerView == pickerView3 {
        textField3.text = items3[row]
    }
}
于 2018-11-22T06:28:46.403 回答