当点击键盘上的返回键时,如何使UITextField移动到下一个文本框

3

我正在使用这段代码移动UITextField,虽然它可以工作,但是我对这段代码不满意,我想在我的注册或登录表单中实现(当我点击return键时,光标移到下一个UITextField)此功能,请问有没有人可以给我建议。

func textFieldDidBeginEditing(_ textField: UITextField) {
    switch textField {
    case txtFldSponsorID:
        moveTextfield(textfield: txtFldSponsorID, moveDistance: 0, up: true)
    case txtFldFullName:
        moveTextfield(textfield: txtFldFullName, moveDistance: -10, up: true)
    case txtFldEmail:
        moveTextfield(textfield: txtFldEmail, moveDistance: -10, up: true)
    case txtFldMobile:
        moveTextfield(textfield: txtFldMobile, moveDistance: -10, up: true)
    case txtFldAddress:
        moveTextfield(textfield: txtFldAddress, moveDistance: -80, up: true)
    case txtFldCity:
        moveTextfield(textfield: txtFldCity, moveDistance: -80, up: true)
    default:
        break
    }
}

func textFieldDidEndEditing(_ textField: UITextField) {
    switch textField {
    case txtFldSponsorID:
        moveTextfield(textfield: txtFldSponsorID, moveDistance: 0, up: true)
    case txtFldFullName:
        moveTextfield(textfield: txtFldFullName, moveDistance: 10, up: true)
    case txtFldEmail:
        moveTextfield(textfield: txtFldEmail, moveDistance: 10, up: true)
    case txtFldMobile:
        moveTextfield(textfield: txtFldMobile, moveDistance: 10, up: true)
    case txtFldAddress:
        moveTextfield(textfield: txtFldAddress, moveDistance: 80, up: true)
    case txtFldCity:
        moveTextfield(textfield: txtFldCity, moveDistance: 80, up: true)
    default:
        break
    }
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

使用IQKeyboardManager处理与键盘相关的事件。https://github.com/hackiftekhar/IQKeyboardManager - technerd
3个回答

4
func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        if textField == txtFldSponsorID {
            txtFldFullName.becomeFirstResponder()
        } else if textField == txtFldFullName {
            txtFldEmail.becomeFirstResponder()
        } else if textField == txtFldEmail {
            txtFldMobile.becomeFirstResponder()
        } else if textField == txtFldMobile {
            txtFldAddress.becomeFirstResponder()
        } else {
            txtFldCity.resignFirstResponder()
        }
        return true
    }

您可以使用上述UITextField委托方法跳转到下一个UItextField。

0
为了在用户按下键盘上的“下一个”按钮时自动将光标移动到下一个数据输入字段,您需要从当前字段中resignFirstResponder并使用becomeFirstResponder将其分配给下一个字段。
if self.emaillabel.isEqual(self.anotherTextField)
 {
    self.anotherTextField.becomeFirstResponder()
 }

0

1- 在Storyboard中为每个textField添加标签号

2- 实现textField代理函数:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField.tag == 1 {    //say this is txtFldSponsorID
        txtFldFullName.becomeFirstResponder()
    }
    return true
}

3- 在Storyboard中将返回键类型更改为“下一个”而不是“返回”,或使用代码实现:

txtFldSponsorID.returnKeyType = .next

4- 别忘了将 delegate 设置为 self


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接