JNPhoneNumberView
要求
- iOS 9.0+ / macOS 10.10+
- Xcode 9.0+
- Swift 4+
安装
JNPhoneNumberView 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行
pod 'JNPhoneNumberView'
示例
要运行示例项目,请先克隆仓库,然后从 Example 目录运行 pod install
。
JNPhoneNumberView
用于显示国家区号和电话号码,您可以通过点击区号并在国家选择器中选择其他国家,此视图具有代理方法以传递国际号码及其有效性。
截图
使用方法
-
在界面构建器中添加 JNPhoneNumberView
-
拖动一个 UIView 并将其类更改为 "JNPhoneNumberView"。
-
在其视图控制器中建立对其的引用。
-
-
实现 JNPhoneNumberViewDelegate
在您的视图控制器中设置 '代理' 并实现以下方法
-
表示视图控制器以用于表示国家列表选择器
func phoneNumberView(getPresenterViewControllerFor phoneNumberView: JNPhoneNumberView) -> UIViewController
-
获取国家选择器配置
func phoneNumberView(getCountryPickerAttributesFor phoneNumberView: JNPhoneNumberView) -> JNCountryPickerConfiguration
-
当国家的电话号码和选择的国家的文本更改时执行
func phoneNumberView(didChangeText nationalNumber: String, country: JNCountry, forPhoneNumberView phoneNumberView: JNPhoneNumberView)
-
结束时编辑,布尔值指示电话号码是否有效,新的国家电话号码和选择的国家
func phoneNumberView(didEndEditing nationalNumber: String, country: JNCountry, isValidPhoneNumber: Bool, forPhoneNumberView phoneNumberView: JNPhoneNumberView)
-
选择的国家已更改,布尔值指示电话号码是否有效
func phoneNumberView(countryDidChanged country: JNCountry, isValidPhoneNumber: Bool, forPhoneNumberView phoneNumberView: JNPhoneNumberView)
-
-
实现 JNPhoneNumberViewDataSourceDelegate
如果您想提供带有自定义国家的数据源而不是使用我们的,请将 dataSourceDelegate 设置在您的视图控制器中
func countryPickerViewControllerLoadCountryList(_ phoneNumberView: JNPhoneNumberView, completion: @escaping ([JNCountry]) -> Void, errorCompletion: @escaping (NSError) -> Void)
-
查看自定义
我们使用具有以下属性的计算属性 JNPhoneNumberViewConfiguration 提供外观自定义:
- countryDialCodeTitleColor 国家区号的颜色。
- countryDialCodeTitleFont: 国家区号字体。
- phoneNumberTitleColor: 电话号码文本字段的颜色。
- phoneNumberTitleFont: 电话号码文本字段字体。
- phoneNumberPlaceHolder: 电话号码文本字段的占位符。
- leftToolBarBarButtonItemTitle: 出现在键盘上的 Tool BarBar ButtonItem 的标题。
- maximumNumbrOfDigits: 允许添加的最大数字。默认值为30位数字
公共方法
-
使用此方法设置默认国家,只需传递国家代码,如"US"、"PS"。
func setDefaultCountryCode(defaultCountryCode: String)
-
将视图配置设置为自定义视图外观。
func setViewConfiguration(_ configuration: JNPhoneNumberViewConfiguration)
-
在 JNPhoneNumberView 中设置电话号码。
func setPhoneNumber(phoneNumber: String)
-
从国家号码和国家设置电话号码。
func setPhoneNumber(nationalNumber: String, preferredRegionCode: String)
-
从 JNPhoneNumberView 获取电话号码。
func getPhoneNumber() -> String
-
电话号码是否有效。
func isValidPhoneNumber() -> Bool
-
获取国家电话号码。
func getNationalPhoneNumber() -> String
-
获取拨号代码。
func getDialCode() -> String
公共属性
- 委托:选择器委托
- dataSourceDelegate:数据源委托
JNCountryPickerViewController
用于显示国家列表并选择其中一个国家,此视图控制器具有将选定的国家作为 JNCountry 传递的委托方法,我们还提供了开发人员传递自定义国家列表而不是使用缓存的选项的灵活性。
屏幕截图
使用
以编程方式展示 JNCountryPickerViewController
-
初始化 JNCountryPickerViewController。
let countryPickerViewController = JNCountryPickerViewController()
-
在导航控制器中启用视图控制器。
let nevigationController = UINavigationController(rootViewController: countryPickerViewController)
-
以模态方式展示导航控制器。
self.present(nevigationController, animated: true, completion: nil)
-
实现 JNCountryPickerViewControllerDelegate
在您的视图控制器中设置 '代理' 并实现以下方法
- 选择国家
func countryPickerViewController(_ controller: JNCountryPickerViewController, didSelectCountry country: JNCountry)
-
实现 JNPhoneNumberViewDataSourceDelegate
在您的视图控制器中设置 'dataSourceDelegate' 并实现以下方法
- 从自定义源加载国家列表
func countryPickerViewControllerLoadCountryList(_ controller: JNCountryPickerViewController, completion: @escaping ([JNCountry]) -> Void, errorCompletion: @escaping (NSError) -> Void)
-
视图定制
我们提供使用 JNCountryPickerConfiguration 的外观定制,具有以下属性
- selectedTitleFont 已选项目的标题字体。
- titleFont 未选项目的标题字体。
- selectedTitleColor 已选项目的标题颜色。
- titleColor 未选项目的标题颜色。
- emptySearchMessageFont 空搜索结果的提示信息。
- 空搜索消息颜色emptySearchMessageColor 空搜索结果消息的颜色。
- 搜索栏着色颜色searchBarTintColor 搜索栏的着色颜色。
- 导航栏颜色navigationBarColor 导航栏的颜色。
- 导航栏着色颜色naigationBarTintColor 导航栏的着色颜色。
- 导航栏标题navigationBarTitle 导航栏的标题。
- 导航栏标题文本属性navigationBarTitleTextAttributes 导航栏标题文本的属性。
- 选择按钮标题selectBarButtonTitle 选择按钮的标题。
- 加载活动指示器颜色loadingAcivityIndicatorColor 加载活动指示器的颜色。
- 空搜索消息emptySearchMessage 空搜索结果的消息。
- 空搜索图片emptySearchImage 空搜索结果的图片。
- 视图背景颜色viewBackgroundColor 视图控制器背景颜色。
- 选择器语言pickerLanguage 选择器的语言。
- 表格单元格间距tableCellInsets 单元格的间距。
- 单元格圆角半径tableCellCornerRaduis 单元格的圆角半径。
- 单元格背景颜色tableCellBackgroundColor 单元格的背景颜色。
- 显示国家拨号代码showDialCode 在国家名称后显示国家拨号代码。
公共属性
- pickerConfiguration: 可以设置自定义配置,而不是默认配置,如视图定制部分所述。
- selectedCountry: 可以设置在打开选择器时选择的地区。
- 委托:选择器委托
- dataSourceDelegate:数据源委托
注意
-
自定义国家实体的必须符合具有以下内容的JNCountry协议
- code 国家代码。
- name 国家名称。
- dialCode 国家拨号代码。
国家数据应遵循 ISO 3166-1
作者
Hamzeh Khanfar & Jayel Zaghmoutt
许可协议
JNPhoneNumberView可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。