开发者社区> 问答> 正文

填充数据后,文本字段不会格式化

我有一个Textfield,用于在字段中输入用户时已经格式化的数字;它如下所示:

https://i.stack.imgur.com/BPAMC.png

这是我的代码:

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

    }
}

所以这个数字是这样填充的:https://i.stack.imgur.com/zHw0g.pnghere

而不是这样:https://i.stack.imgur.com/Oeolc.png

知道如何让它以与用户输入相同的格式填充TextField吗?

请注意,当我保存电话号码时,我删除空格和字符以便将数字保存如下1234567889在数据库里。

展开
收起
游客5akardh5cojhg 2019-12-25 16:31:51 4505 0
1 条回答
写回答
取消 提交回答
  • self.phoneNumberTextField?.text = phoneNumber
    
    

    不会触发shouldChangeCharactersIn,你需要

    self.phoneNumberTextField?.text = formattedNumber(number:phoneNumber)
    
    2019-12-25 16:32:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载