使用选取器视图更改文本时未调用 onTextChange 目标 - iOS Swift



我有两个文本字段。

一种是人型:"丈夫"、"妻子"、"单身"、"孩子"。另一个是出生顺序。

我希望仅当人员类型文本字段的文本为"儿童"时启用出生顺序文本字段。

人员类型文本字段的输入视图是具有 4 个选项的选取器视图。我尝试将目标添加到我的人员类型文本字段中,如下所示:

personTypeTextField.addTarget(self, action: #selector(onTextChange), for: UIControlEvents.editingChanged)

然后 onTextChange 函数执行以下操作:

func onTextChange() {
    if personTypeTextField.text == "Child" {
        birthOrderTextField.isEnabled = true
    } else {
        birthOrderTextField.isEnabled = false
        birthOrderTextField.text = ""
    }
}

但是当我使用选取器视图进行人员类型选择时,不会调用 onTextChange 函数。为什么不叫?

您可以使用以下UIPickerView delgate方法代替文本字段选择器

响应行选择

func pickerView(UIPickerView,didSelectRow: Int, inComponent: Int(

当用户选择组件中的行时,由选取器视图调用。

self.personTypeTextField.text = YOUR_ARRAY[row]

最后检查

if personTypeTextField.text == "Child" {
        birthOrderTextField.isEnabled = true
    } else {
        birthOrderTextField.isEnabled = false
        birthOrderTextField.text = ""
    }

不要忘记将委托分配给选取器视图。

如果我理解正确,您不会直接在输入视图中键入,而是从选取器视图中选择一个选项。我猜你正在以编程方式为personTypeTextField.text分配一个新值。在这种情况下,不调用 UIControlEvents.editChanged 目标是正常的,因为用户从未编辑过输入视图。您应该在选取器完成选取值后运行函数。

最新更新