2016-11-08 93 views
1

我想resignFirstResponder()为一个textField只有当所有的textFields都被填充。但由于某种原因,它不起作用。无论其他人是否填写,它只会检查一个答复者。resignFirstResponder只有在所有文本字段都被填充的情况下

这就是我要做的:

//Check wheather fields are filled or not and then enable or disable register button 
    func textChanged(_ sender: NSNotification) { 
     if usernameField.hasText && emailField.hasText && passwordField.hasText && confirmPasswordField.hasText { 
      registerButton.isEnabled = true 
      confirmPasswordField.resignFirstResponder() 
     } 
     else { 
      registerButton.isEnabled = false 
     } 
    } 

而且我也试过:

func textFieldShouldReturn(textField: UITextField!) -> Bool { 
     if usernameField.hasText && emailField.hasText && passwordField.hasText && confirmPasswordField.hasText { 
     confirmPasswordField.resignFirstResponder() 
      return true 
     } 
     return false 
    } 

我做错了吗?

+0

代码很好。我只是试过,它的工作原理。我不确定我是否理解你的意思,“无论其他人是否被填补,它只会检查一个回应者。”你的意思是说resignFirstResponder只有在专注于confirmPasswordField时才会触发? –

+0

我有4个字段,并且我希望最后一个字段只有在所有其他人都填写时才是第一响应者。 –

+0

好的。现在有什么问题?如果在文本域1,2和3中有文本并在将数据输入到4之前返回,会发生什么?如果在输入4中的数据后按回车键会发生什么? –

回答

1

这是我用

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    if text1.hasText() && text2.hasText() && text3.hasText() && text4.hasText(){ 
     registerButton.enabled = true 
     text4.resignFirstResponder() 
     return true 
    } 
    return false 
} 

的代码,我不知道你是如何调用该函数框TextChanged所以我真的不能找出你想在那里做。

如果您希望确保用户在填写text1,text2,text3之前不能移动到text4,然后使用另一个if块来实现该功能。