案例
我在一个视图控制器中有3个视图。
始终显示视图1,它将像具有不同UIButton的菜单一样运行。
View 2是登录视图,它将作为登录屏幕。这包含2个UIButtons。 UIButton 1是登录(它将执行函数tryLogin(),见下面的代码),UIButton 2是寄存器(更改视图)。该视图还包含2个文本字段。 textfield 1是电子邮件,textfield 2是密码。视图2是视图1的一半,我告诉用户他们需要登录"解锁"观点1。
View 3是寄存器视图,它将用于注册新用户。它还包含2个UIButtons和2个文本字段。 2个UIButtons是:register(将执行tryMakeAccount())并登录。这两个文本域再次是电子邮件和密码。
我想要什么
当用户在输入电子邮件时按下返回键时,需要转到密码字段。当用户在输入密码时按下返回键时,它需要根据呈现的视图(登录或注册)执行功能。当我只有2个视图(视图1和视图2)时,我已经这样做了。但是使用新视图(视图3),我的代码不再起作用了。如何解决这个问题?
代码
func setTextFieldDelegates() {
loginEmail.delegate = self
loginPassword.delegate = self
registerEmail.delegate = self
registerPassword.delegate = self
loginEmail.tag = 0 //This worked well with 2 views
loginPassword.tag = 1 //This worked well with 2 views
registerEmail.tag = 0 //What to enter here?
registerPassword.tag = 0 //What to enter here?
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// Try to find next responder
if let nextField = textField.superview?.viewWithTag(textField.tag + 1) as? UITextField {
nextField.becomeFirstResponder()
} else {
// Not found, so remove keyboard.
textField.resignFirstResponder()
tryLogin() //This should execute when user clicked return key on view 2 (login)
tryMakeAccount() //this should execute when user clicked return key on view 3 (register)
}
return false
}