Swift 3:显示UITextField中剩余的字符

时间:2016-10-13 12:10:30

标签: ios swift uitextfield

我想知道如何显示UITextField中剩余的字符。

现在我通过以下方式限制角色:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if textField == TextFieldOne {
         guard let text = textField.text else { return true }
         let newLength = text.characters.count + string.characters.count - range.length
         return newLength <= 55
    }
    return true
 }

我想要做的是在您输入时让UILabel55倒计时。

我在考虑在textFieldDidChange内添加某种逻辑来购买我无法访问该功能的范围。

1 个答案:

答案 0 :(得分:4)

您需要UITextFieldDelegate

viewDidLoad中的委托设置为textField插座。

然后使用shouldChangeCharactersInRange函数。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        textField.delegate = self

        // here you set the start value 55 of your label
        label.text = String(55)
    }

}

extension ViewController: UITextFieldDelegate {

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

        guard let text = textField.text else { return true }
        let length = text.characters.count + string.characters.count - range.length

        // create an Integer of 55 - the length of your TextField.text to count down
        let count = 55 - length

        // set the .text property of your UILabel to the live created String
        label.text =  String(count)

        // if you want to limit to 55 charakters
        // you need to return true and <= 55

        return length <= 55 // To just allow up to 55 characters
    }

}