For some reason, I'm having trouble with making a textfield the first responder.
I have a UITableView with two rows. Each row has a label and a UITextField. The textfields are tagged kLoginRowIndex = 0 and kPasswordRowIndex = 1. As you might have guessed, I use this for setting login and password.
If the user taps on the return button when editing the login textfield, I want the password textfield to get the focus. Unfortunately, the password textfield doesn't accept the focus. Here is my code:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"%s:(textField.tag:%d)", __FUNCTION__, textField.tag);
[textField resignFirstResponder];
if(textField.tag == kLoginRowIndex) {
UITableViewCell *cell = [self tableView:self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:kPasswordRowIndex inSection:0]];
UITextField *nextTextField = (UITextField *)[cell viewWithTag:kPasswordRowIndex];
NSLog(@"(nextTextField.tag:%d)", nextTextField.tag);
NSLog(@"canBecomeFirstResponder returned %d", [nextTextField canBecomeFirstResponder]);
NSLog(@"becomeFirstResponder returned %d", [nextTextField becomeFirstResponder]);
} else {
[self validate:textField];
}
return NO;
}
This is the log output:
-[SettingsViewController textFieldShouldReturn:]:(textField.tag:0) (nextTextField.tag:1) canBecomeFirstResponder returned 1 becomeFirstResponder returned 0
What I tried:
- returning YES instead of NO
- removing the call to canBecomeFirstResponder (which is just for debugging purposes)
Any hints are appreciated!