首页 > 解决方案 > 按下返回按钮时在 UITextField 之间切换

问题描述

当按下返回按钮时,我试图让我的 UITextFields 切换到下一个。这是我的代码:

func textFieldShouldReturn(_ textField: UITextField) -> Bool
    {
        // Try to find next responder
        if let nextField = textField.superview?.superview?.viewWithTag(textField.tag + 1) as? UITextField {
            nextField.becomeFirstResponder()
            print("success")
        } else { //if textField.text != nil {
            textField.resignFirstResponder()
            print("error")
    } 
    return false
}

我一直将此代码用于其他项目。但是,这是一个例外。我在它自己的堆栈视图中拥有每个元素,并且所有这些堆栈视图都在超级视图堆栈视图中。运行应用程序后,我按下返回按钮,然后它转到 else 语句并辞去第一响应者的职务。我需要它来运行nextField.becomesFirstResponder() 这里是一个截图

标签: iosswiftuitextfielduistackview

解决方案


创建 Outlet Collection 并将每个文本字段连接到它

@IBOutlet var textFields: [UITextField]!

在文本字段委托函数之后使用这个:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    let nextIndex = textField.tag + 1
    if textFields.count > nextIndex {
        let nextField = textFields[nextIndex]
        nextField.becomeFirstResponder()
    } else {
        textField.resignFirstResponder()
    }
    return false
} 

推荐阅读