[swift] PhoneNumberKit을 사용하여 특정 국가의 전화번호에 따른 입력 화면 표시하기

Swift 언어를 사용하고 있다면, PhoneNumberKit 라이브러리를 활용하여 특정 국가의 전화번호에 따른 입력 화면을 구현할 수 있습니다. PhoneNumberKit은 전화번호를 파싱하고 형식화하는 기능을 제공하는 강력한 라이브러리입니다.

PhoneNumberKit 설치

PhoneNumberKit은 CocoaPods를 통해 쉽게 설치할 수 있습니다. Podfile에 다음과 같이 PhoneNumberKit 의존성을 추가한 후, pod install 명령을 실행하세요.

pod 'PhoneNumberKit'

전화번호 입력 화면 구현하기

  1. 먼저, PhoneNumberKit을 import하여 사용할 수 있도록 준비합니다.
import PhoneNumberKit
  1. 사용자에게 전화번호를 입력받을 UITextField를 생성합니다.
let phoneNumberTextField = UITextField()
  1. PhoneNumberKit 인스턴스를 생성합니다.
let phoneNumberKit = PhoneNumberKit()
  1. 특정 국가 코드를 설정해줍니다. 예를 들어, 한국의 경우 국가 코드는 “+82”입니다.
let countryCode = "+82"
  1. UITextFieldDelegate를 상속받은 클래스를 정의하고, textFieldShouldChangeCharactersIn 메서드를 구현합니다.
class PhoneNumberTextFieldDelegate: NSObject, UITextFieldDelegate {

    let phoneNumberKit = PhoneNumberKit()
    let countryCode = "+82"

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        guard let text = textField.text else { return true }
        
        // 전체 텍스트와 입력된 텍스트를 결합합니다.
        let fullText = (text as NSString).replacingCharacters(in: range, with: string)
        
        do {
            // 전화번호를 파싱합니다.
            let phoneNumber = try phoneNumberKit.parse(fullText, withRegion: countryCode, ignoreType: true)
            
            // 파싱에 성공하면 파싱된 전화번호를 표시합니다.
            textField.text = phoneNumberKit.format(phoneNumber, toType: .international)
            
        } catch {
            // 파싱에 실패한 경우, 이전에 입력된 텍스트를 그대로 표시합니다.
            textField.text = text
        }
        
        return false
    }
}
  1. ViewController에서 UITextFieldDelegate 프로토콜을 구현하고, PhoneNumberTextFieldDelegate 인스턴스를 생성하여 UITextField에 할당합니다.
class ViewController: UIViewController, UITextFieldDelegate {

    let phoneNumberTextField = UITextField()
    let phoneNumberDelegate = PhoneNumberTextFieldDelegate()

    override func viewDidLoad() {
        super.viewDidLoad()

        // UITextField의 델리게이트를 설정합니다.
        phoneNumberTextField.delegate = phoneNumberDelegate
    }
}

이제 사용자가 전화번호를 입력할 때, 사용자가 설정한 국가 코드에 따라 입력 화면이 자동으로 변환됩니다. PhoneNumberKit을 사용하면 유효한 전화번호를 손쉽게 파싱하고 형식화할 수 있으며, 사용자가 입력한 번호가 유효하지 않으면 오류를 처리할 수도 있습니다.

PhoneNumberKit에 대한 자세한 내용은 GitHub 페이지를 참조하시기 바랍니다.