iOS上国家代码的电话号码格式
Posted
技术标签:
【中文标题】iOS上国家代码的电话号码格式【英文标题】:Phone number format from country code on iOS 【发布时间】:2017-08-10 06:33:27 【问题描述】:我需要在 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")
【问题讨论】:
请看how to ask a question部分。这也可能是相关的。 How to create a Minimal, Complete, and Verifiable example @RickBronger 我已经读过这个并且我的问题也是有效的,请不要在没有尝试理解问题的情况下气馁。这个问题与您的技能无关,也许这就是您无法理解的原因。否则,我问了一个非常直截了当的问题,并要求对我的问题提出建议,并与社区分享我的发现。另外,在发布之前,我会仔细检查是否有人对此问题有任何解决方案或方法。 我没有看到您的问题为解决您的问题所做的任何努力。代码 sn-p 都不会让您卡在我们可以提供帮助的地方。在我看来,您要求某人为您编写代码不是 *** 的工作方式。 @RickBronger 我们总是需要一个方向来努力做某事,直到现在我都找不到那个方向。没有必要发布每一次没有朝着正确方向前进的尝试。请参阅下面的答案和 cmets,您可能会在我的问题上找到一些努力。 【参考方案1】:我不知道这是不是一个有效的解决方案,你可以试试这个
说让你的占位符是 012345679 我相信你可以做的是
创建一个变量来存储这个占位符 根据用户选择的国家/地区解析此占位符。 将解析后的设置为文本字段中的占位符。【讨论】:
已经尝试过了,但是解析器为我提供了针对此字符串的无效电话号码。我尝试使用“(country_code)1231234567”并期望得到类似“+1(123)123-4567”的结果。但是没有 能否请您指定国家代码以便我查看示例项目 您可以使用我尝试过的任何国家/地区代码 +1、+91、+92 使用 PhoneNumberKit 第三方 我刚试过 phoneNumberKit.format(phoneNumberKit.parse("123456789", withRegion: "FR", ignoreType: false), toType: .international) 让我在这种情况下分享我的代码。请验证该代码。【参考方案2】:对于那些想做同样事情的人,我使用了两个不同的 3rd 方来实现功能。
-
NKVPhoneNumber
SHSPhoneComponent
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,
【讨论】:
countryViewController 函数在我的项目中从未被调用过。我已经把 phoneFlag.phonePickerDelegate = self.我需要配置其他东西吗? @AndréVicente 我有同样的问题,我的应用程序总是崩溃,因为国旗是零。您找到解决此问题的方法了吗? 如果你能以某种方式分享你的代码,我可以帮忙...在选择你的标志是零或其他地方?以上是关于iOS上国家代码的电话号码格式的主要内容,如果未能解决你的问题,请参考以下文章