In Objective-C
-(BOOL)textFieldShouldReturn:(UITextField*)textField { NSInteger nextTag = textField.tag + 1; UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; if (nextResponder) { [nextResponder becomeFirstResponder]; } else { [textField resignFirstResponder]; } return NO; }
In Swift
func textFieldShouldReturn(textField: UITextField!) -> Bool { let nextTage=textField.tag+1; let nextResponder=textField.superview?.viewWithTag(nextTage) as UIResponder! if (nextResponder != nil){ nextResponder?.becomeFirstResponder() } else { textField.resignFirstResponder() } return false } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { textField .resignFirstResponder() }