【问题标题】:Textfield is not formatted once populated with data填充数据后,文本字段未格式化
【发布时间】:2020-04-15 19:28:57
【问题描述】:

我有一个数字文本字段,当用户在该字段中键入时,该文本字段已经格式化;它看起来像这样:

这是我的代码:

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

phoneNumberTextField.delegate = self
retrieveUserData()

}

    func formattedNumber(number: String) -> String {
        let cleanPhoneNumber = number.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
        let mask = "(XXX) XXX-XXXX"

        var result = ""
        var index = cleanPhoneNumber.startIndex
        for ch in mask where index < cleanPhoneNumber.endIndex {
            if ch == "X" {
                result.append(cleanPhoneNumber[index])
                index = cleanPhoneNumber.index(after: index)
            } else {
                result.append(ch)
            }
        }
        return result
    }



extension AccounInfotVC: UITextFieldDelegate {

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        guard let text = textField.text else { return false }
        let newString = (text as NSString).replacingCharacters(in: range, with: string)
        textField.text = formattedNumber(number: newString)
        return false
    }
}

但是,当我的视图加载时;一旦使用此代码从数据库中自动填充该数字,该数字就不会被格式化:

func retrieveUserData(){


        db.collection(DatabaseRef.Users).document(userID).getDocument { (snap, error) in
            self.phoneNumberTextField?.text = phoneNumber

    }
}

所以数字会像这样填充:

而不是这个:

知道如何让它以与用户键入时相同的格式填充文本字段吗?

请注意,当我保存电话号码时,我会删除空格和字符,因此号码会像 1234567889 一样保存在数据库中。

【问题讨论】:

    标签: ios swift iphone format uitextfield


    【解决方案1】:

    这个

    self.phoneNumberTextField?.text = phoneNumber
    

    不会触发shouldChangeCharactersIn,你需要

    self.phoneNumberTextField?.text = formattedNumber(number:phoneNumber)
    

    【讨论】:

    • 如何让它触发它?
    • 您知道如何更改此代码,以便我可以格式化加拿大邮政编码吗?例如M9C 1L2(3个数字,3个字母,1个空格)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2013-09-02
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多