iOS app "next" key won't go to the next text field iOS app "next" key won't go to the next text field ios ios

iOS app "next" key won't go to the next text field


The return key doesn't do anything special in a text field by default. You need to explicitly change the first responder:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {    if (theTextField == self.textPassword) {        [theTextField resignFirstResponder];    } else if (theTextField == self.textUsername) {        [self.textPassword becomeFirstResponder];    }    return YES;}


I use this code that allows me to control the form behavior in the storyboard:

-(BOOL) textFieldShouldReturn:(UITextField *)textField{    if(textField.returnKeyType==UIReturnKeyNext) {        UIView *next = [[textField superview] viewWithTag:textField.tag+1];        [next becomeFirstResponder];    } else if (textField.returnKeyType==UIReturnKeyDone) {        [textField resignFirstResponder];    }    return YES;} 

All you need is to assign the order value as tag, and returnkey according to Next or Done on each input control.


for those who want to use Swift language:

class MyClass: UIViewController, UITextFieldDelegate {@IBOutlet weak var text1: UITextField!@IBOutlet weak var text2: UITextField!@IBOutlet weak var text3: UITextField!override func viewDidLoad() {    super.viewDidLoad()    text1.delegate = self    text2.delegate = self    text3.delegate = self}//....func textFieldShouldReturn(textField: UITextField) -> Bool{    if textField == self.text1 {        self.text2.becomeFirstResponder()    }else if textField == self.text2{        self.text3.becomeFirstResponder()    }else{        self.text1.becomeFirstResponder()    }    return true } //...

}

:-)