将 UITextfield 从不可编辑更改为可编辑 - Swift

Changing UITextfield from Non-Editable to Editable - Swift

我正在尝试让两个不可编辑的 UITextField 显示 nameage。我的导航栏中有一个 Edit UIBarButtonItem,我希望能够在按下该按钮时触发 UITextField 以进行编辑。

在我的 Interface Builder 中,我没有为两个 UITextField 选中“启用用户交互”选项。我需要添加 ageText.UserInteractionEnabled = true 吗?我在这里不知所措。

class UserProfileVC: UIViewController, 
UITextFieldDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var infoBorder: UILabel!
    @IBOutlet weak var nameText: UITextField!
    @IBOutlet weak var ageText: UITextField!

    var textFields:[UITextField] = []

    @IBAction func editButton(sender: UIBarButtonItem) {
        nameText.becomeFirstResponder()
        ageText.becomeFirstResponder()
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        var currentTextField = textFields[0]

        if (currentTextField == textField) {
            currentTextField = textFields[1]
            currentTextField.becomeFirstResponder()
        } else {
            currentTextField.resignFirstResponder()
        }

        return true
    }
}

您应该有一个布尔变量。将其设置为 'false',然后在按下按钮时将其切换为 'true'。根据其状态,仅 运行 不同的方法基本上允许您编辑或不编辑。

像这样:

var editTextFieldToggle: Bool = false

@IBoutlet var textFieldToggle: UIButton!

@IBAction func textFieldToggle_Action(sender: UIButton){

    editTextFieldToggle = !editTextFieldToggle //switches button ON/OFF

    if editTextFieldToggle == true {
        textFieldActive()

    } else {
        textFieldDeactive()

    }
}

textFieldActive(){ 
    //Turn things ON
    nameText.enabled == true
    ageText.enabled == true
}

textFieldDeactive(){ //Add anything else
    //Turn things OFF
    nameText.enabled == false
    ageText.enabled == false
}

是的,你想做

nameText.userInteractionEnabled = true
ageText.userInteractionEnabled = true

并且可能

nameText.becomeFirstResponder()

第一次按下编辑按钮时。您可能还想将 "Edit" 按钮更改为 "Done" 按钮。当用户按下完成按钮时,您需要确保禁用用户交互并退出两个文本字段的第一响应者。