我需要在 UITextField 中将电话号码格式显示为占位符。我怎么能这样做?
对于国家/地区选择,我使用下面提到的图书馆,并根据用户选择的国家/地区提供国家/地区和国家/地区代码。
https://github.com/NikKovIos/NKVPhonePicker
选择国家/地区后,我需要显示所选国家/地区的电话号码格式,并且在提交该电话号码后,我必须验证电话号码。
我还发现第三方( PhoneNumberKit )的灵感来自谷歌的libphonenumber,但它用于验证,它不提供针对国家/地区代码的预期电话号码格式。以下是链接。
https://github.com/marmelroy/PhoneNumberKit
更新1: 试过这个并获得通用解析器错误
let phoneNumberKit = PhoneNumberKit()
do {
let phoneNumber = try phoneNumberKit.parse("+921230123456")
}
catch {
print("Generic parser error")
}
更新2: 更新了代码,仍然出现异常
let phoneNumberKit = PhoneNumberKit()
do {
let phoneNumber = try phoneNumberKit.parse("1230123456", withRegion: "FR", ignoreType: false)
let formatedNumber = phoneNumberKit.format(phoneNumber, toType: .international)
print(formatedNumber)
}
catch {
print("Generic parser error")
}
答案 0 :(得分:2)
我不知道这是否是一个有效的解决方案,你可以试试这个
说让你的占位符为012345679我认为你可以做的是
答案 1 :(得分:0)
对于那些想做同样事情的人,我使用了两个不同的第三方来实现这个功能。
NKVPhoneNumber 用于选择国家/地区代码,我已经在元数据中修改了一点介绍phone_format
。从列表中选择一个国家/地区后,它会返回一个Country
对象,其中包含Code, Extension, Flag and format_placeholder
SHSPhoneComponent 然后使用format_placeholder
来验证格式。
import SHSPhoneComponent
import NKVPhonePicker
@IBOutlet weak var phoneTF: SHSPhoneTextField!
@IBOutlet weak var phoneFlag: NKVPhonePickerTextField!
@IBOutlet weak var lblCountryCode: UILabel!
//MARK: - NKV callback delegates
func countriesViewController(_ sender: CountriesViewController, didSelectCountry country: Country) {
//
phoneTF.formatter.setDefaultOutputPattern(country.formatPattern)
phoneTF.text = ""
phoneTF.placeholder = country.formatPatternPlaceHolder
countryCode = "+\(country.phoneExtension)"
lblCountryCode.text = countryCode
}
注意:我已将 NVKPhoneNumber 转换为 Swift 4.0 ,