我有两个文本字段。
一种是人型:"丈夫"、"妻子"、"单身"、"孩子"。另一个是出生顺序。
我希望仅当人员类型文本字段的文本为"儿童"时启用出生顺序文本字段。
人员类型文本字段的输入视图是具有 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 目标是正常的,因为用户从未编辑过输入视图。您应该在选取器完成选取值后运行函数。