2017-06-21 175 views
0

我有两个文本字段。onTextChange target当文本被选择器视图改变时不被调用 - iOS Swift

一个是人型:“老公,‘妻子’,‘单’,‘孩子’ 另一种是出生顺序

我想只当启用了出生顺序文本字段。人物类型文本字段的文本是“孩子”

人类型文本字段的输入视图是一个选择器视图与4个选项我尝试添加一个目标到我的人类型文本字段,如下所示:

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

然后,onTextChange函数执行th是:

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

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

回答

1

您可以使用下面UIPickerView delgate方法,而不是文本字段选择器

应对行选择

FUNC pickerView(UIPickerView,didSelectRow:诠释,inComponent:智力)

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

self.personTypeTextField.text = YOUR_ARRAY[row] 

最后检查

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

不要忘记分配委托pickerView。

+0

谢谢。我应该这样做,因为我已经实现了pickerView didSelectRow方法来设置文本字段的文本。但是,即使使用选取器视图更改了值,您仍然会认为textField值更改函数仍然会被调用。 –

0

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

相关问题