I have outlets to 3 textfields in my code as follows :
@IBOutlet var oldPasswordTextField: UITextField! { didSet { oldPasswordTextField.delegate = self } }
@IBOutlet var newPasswordTextField: UITextField! { didSet { newPasswordTextField.delegate = self } }
@IBOutlet var confirmPasswordTextField: UITextField! { didSet { confirmPasswordTextField.delegate = self } }
In my textFieldShouldReturn delegate method, I want to make the next textfield as the first responder on click of return as follows :
func textFieldShouldReturn(textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
if textField == oldPasswordTextField
{
newPasswordTextField.becomeFirstResponder()
}
else if textField == newPasswordTextField
{
confirmPasswordTextField.becomeFirstResponder()
}
else
{
saveButtonTapped()
}
return true
}
But it wasn't working. So I tried to check what was going wrong. So I tried this :
func textFieldShouldReturn(textField: UITextField) -> Bool { //delegate method
if textField.canResignFirstResponder()
{
print("textField can resign first responder")
if textField.resignFirstResponder() == true
{
print("textField resigned first responder")
}
else
{
print("textField didnt resign first responder")
}
}
else
{
print("textField cant resign first responder")
}
if textField == oldPasswordTextField
{
if newPasswordTextField.canBecomeFirstResponder() == true
{
if newPasswordTextField.becomeFirstResponder() == true
{
print("newPassword field has become first responder")
}
else
{
print("newPassword field cannot become first responder")
}
}
}
else if textField == newPasswordTextField
{
confirmPasswordTextField.becomeFirstResponder()
}
else
{
saveButtonTapped()
}
return true
}
And overtime I get "textField cant resign first responder" "newPassword field cannot become first responder" on my console. I don't know whats going wrong here. Why are the canResignFirstResponder() method and becomeFirstResponder() methods returning false? Any help?