我有两个文本字段。
一个是人类型:"丈夫,"妻子","单身","儿童"。 另一个是出生顺序。
我希望仅在人员类型文本字段的文本为" Child"。
时启用出生顺序文本字段。人物类型文本字段的输入视图是具有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函数。为什么不打电话?
答案 0 :(得分:2)
您可以使用UIPickerView delgate方法而不是textField选择器
响应行选择
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 = ""
}
不要忘记将委托分配给pickerView。
答案 1 :(得分:1)
如果我理解正确,你不要直接在输入视图中输入,而是从选择器视图中选择一个选项。我猜你是以编程方式为personTypeTextField.text分配一个新值。在这种情况下,UIControlEvents.editingChanged目标未被调用是正常的,因为输入视图从未被用户编辑过。您应该在选择器完成选择值时运行您的功能。