错误?由UITextFieldDelegate进行的UILabel实时更新由一个字符组成

时间:2017-07-07 02:43:49

标签: ios swift uitextfield uilabel uitextfielddelegate

这是一个示例应用,用于演示我遇到的问题:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var aTextField: UITextField!
    @IBOutlet weak var aTextLbl: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        aTextField.delegate = self
    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        aTextLbl.text = aTextField.text
        return true
    }
}

这是一个演示:

Link to Animated Gif

我的问题是,如何使标签与我在文本字段中键入的内容完全同步?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用shouldChangeCharactersIn,而不是使用委托方法EditingChanged

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var aTextLbl: UILabel!
    @IBOutlet weak var aTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func editingChanged(_ sender: UITextField) {
        aTextLbl.text = aTextField.text
    }
}

enter image description here

答案 1 :(得分:0)

您也可以使用UITextFieldDelegate函数执行此操作。

您需要手动追加带有textField.text值的字符串,如下所示:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let currentText = txtFldPassword.text
    let newText = (currentText! as NSString).replacingCharacters(in: range, with: string)
    print(newText)

    return true
}