[swift] PhoneNumberKit을 사용하여 전화번호 입력시 자동 제안 기능 추가하기

PhoneNumberKit은 Swift에서 전화번호 관련 작업을 쉽게 처리할 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 전화번호 입력 시 자동 제안 기능을 추가해보겠습니다.

PhoneNumberKit 설치

PhoneNumberKit을 사용하기 위해서는 먼저 프로젝트에 해당 라이브러리를 설치해야 합니다. 이를 위해 CocoaPods를 사용할 예정입니다.

  1. Podfile을 열고 다음 내용을 추가합니다.
pod 'PhoneNumberKit', '~> 3.0'
  1. 터미널에서 프로젝트 폴더로 이동한 뒤, pod install 명령을 실행합니다.
$ pod install
  1. Xcode에서 *.xcworkspace 파일을 열어 사용할 준비를 마칩니다.

자동 제안 기능 구현하기

  1. ViewController.swift 파일을 열고, PhoneNumberKit을 import 합니다.
import PhoneNumberKit
  1. ViewController 클래스에 phoneNumberKit 변수를 추가합니다.
class ViewController: UIViewController {
    let phoneNumberKit = PhoneNumberKit()
    // ...
}
  1. UITextFieldDelegate를 구현하기 위해 ViewController 클래스에 UITextFieldDelegate 프로토콜을 상속받도록 해주세요.
class ViewController: UIViewController, UITextFieldDelegate {
    // ...
}
  1. 전화번호를 입력받을 UITextField를 만들고, 해당 UITextField에 대한 delegate를 ViewController로 지정합니다.
class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var phoneNumberTextField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        phoneNumberTextField.delegate = self
    }
    // ...
}
  1. UITextFieldDelegate의 textField(_:shouldChangeCharactersIn:replacementString:) 메서드를 구현합니다. 사용자가 전화번호를 입력할 때마다 입력된 문자열을 확인하고, 입력된 문자열이 유효한 전화번호 패턴인지 확인합니다. 유효한 경우에는 자동으로 제안 메시지가 나타나도록 처리합니다.
class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var phoneNumberTextField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        phoneNumberTextField.delegate = self
    }
    
    func textField(
        _ textField: UITextField,
        shouldChangeCharactersIn range: NSRange,
        replacementString string: String
    ) -> Bool {
        guard let currentText = phoneNumberTextField.text else { return true }
        
        let updatedText = (currentText as NSString).replacingCharacters(in: range, with: string)
        
        do {
            let phoneNumber = try phoneNumberKit.parse(updatedText)
            
            // 자동 제안 메시지 표시
            print(phoneNumber.nationalNumber)
            
        } catch {
            // 입력된 문자열이 유효하지 않음
            // 자동 제안 메시지 숨김
            print("유효하지 않은 전화번호: \(updatedText)")
        }
        
        return true
    }
}

자동 제안 메시지를 표시하기 위해서는 필요한 UI 작업을 추가해야 합니다.

이제, PhoneNumberKit을 사용하여 전화번호 입력 시 자동 제안 기능을 추가하였습니다. 해당 기능을 활용하여 사용자가 쉽게 전화번호를 입력할 수 있도록 도움을 줄 수 있습니다.

더 자세한 내용은 PhoneNumberKit GitHub 페이지에서 확인할 수 있습니다.