【问题标题】:How to change text in text field and label at the same time如何同时更改文本字段和标签中的文本
【发布时间】:2018-01-27 16:17:44
【问题描述】:

有人知道如何同时在 textField 和 label 上写消息吗? 当我在 textField 上写消息时,我想在标签上看到该文本,一个字符一个字符,同时....

是否有任何 UItextField 委托?

【问题讨论】:

标签: ios swift uitextfield


【解决方案1】:

尝试将侦听器添加到 textfeild 的 editingChanged

textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

@objc func textFieldDidChange(_ textField: UITextField) {

 yourLabel.text = textField.text

}

【讨论】:

    【解决方案2】:

    我们可以将 SH_Kahn 展示的方法更进一步:

    import UIKit
    
    
    extension UILabel {
        @objc
        func input(textField: UITextField) {
            self.text = textField.text
        }
    }
    

    我们添加了一个签名与添加目标机制兼容的方法。该方法只会获取 textField 的文本并将其设置为标签的文本。

    class ViewController: UIViewController {
    
        @IBOutlet weak var outputLabel: UILabel!
        @IBOutlet weak var inputField: UITextField!
        override func viewDidLoad() {
            super.viewDidLoad()
            self.inputField.addTarget(outputLabel, action: #selector(UILabel.input(textField:)), for: .editingChanged)
        }
    
    
    }
    

    但如果我们更频繁地需要它,我们可能想让它更易于使用:

    extension UILabel {
        @objc
        func input(textField: UITextField) {
            self.text = textField.text
        }
    
        func connect(with textField:UITextField){
            textField.addTarget(self, action: #selector(UILabel.input(textField:)), for: .editingChanged)
        }
    }
    
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var outputLabel: UILabel!
        @IBOutlet weak var inputField: UITextField!
        override func viewDidLoad() {
            super.viewDidLoad()
            outputLabel.connect(with: inputField)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多