2017-07-07 16 views
1

這裏是一個示例應用程序,以證明我碰到了這個問題:錯誤?通過UITextFieldDelegate的UILabel現場更新是關閉的一個字符

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

我的問題是,如何使它與我在文本框中輸入的內容完全同步?謝謝!

+0

見例如https://stackoverflow.com/questions/28394933/how-do-i-check-when-a-uitextfield-changes。 –

回答

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

+0

感謝您的快速響應!你能不能更具體一點,我找不到有關鍵字「EditingChanged」的函數。謝謝! –

+0

更新了我的答案。 – Lawliet

+0

今天早些時候我嘗試了「Value Changed」,它沒有奏效。但「編輯改變」的作品真的很棒!謝謝! –

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 
}