gpt4 book ai didi

ios - 跟进手机格式化: More than 1 phone number field.

转载 作者:行者123 更新时间:2023-11-30 12:13:18 24 4
gpt4 key购买 nike

我对 Swift 3/Xcode 中的电话号码格式化代码有疑问。 Vikzilla 提供了出色的格式化代码。但是,我的应用程序中有 2 个电话字段。一个是电话号码,另一个是传真号码。如前所述,Vikzilla 提供的答案是完美的,但我一生都无法弄清楚我需要在第二个字段(传真号码)的代码中编辑什么内容,而不会抛出“'textfield 的无效重新声明...” “错误。我已重命名第二个函数等。不会引发任何错误,但传真字段的格式不起作用...帮助?下面是代码。正如我提到的,它工作完美,但我不知道如何编辑它,所以它可以在 2 号工作。字段(传真号码)。谢谢!

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if (textField == self.phoneField){
let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let components = newString.components(separatedBy: NSCharacterSet.decimalDigits.inverted)

let decimalString = components.joined(separator: "") as NSString
let length = decimalString.length
let hasLeadingOne = length > 0 && decimalString.character(at: 0) == (1 as unichar)

if length == 0 || (length > 10 && !hasLeadingOne) || length > 11 {
let newLength = (textField.text! as NSString).length + (string as NSString).length - range.length as Int

return (newLength > 10) ? false : true
}
var index = 0 as Int
let formattedString = NSMutableString()

if hasLeadingOne {
formattedString.append("1 ")
index += 1
}
if (length - index) > 3 {
let areaCode = decimalString.substring(with: NSMakeRange(index, 3))
formattedString.appendFormat("(%@)", areaCode)
index += 3
}
if length - index > 3 {
let prefix = decimalString.substring(with: NSMakeRange(index, 3))
formattedString.appendFormat("%@-", prefix)
index += 3
}

let remainder = decimalString.substring(from: index)
formattedString.append(remainder)
textField.text = formattedString as String
return false
} else {
return true
}
}

最佳答案

您只需要一个 shouldChangeCharactersIn 方法。只需删除最初的 if (及其 else)。然后您的代码将适用于两个文本字段。

如果您实际上只有两个电话号码文本字段,则只需将 if 更新为:

if (textField == self.phoneField || textField == self.faxField) {

顺便说一句,您的代码仅适用于美国和加拿大的电话号码,不适用于任何其他国家/地区。

关于ios - 跟进手机格式化: More than 1 phone number field.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com