[swift] PhoneNumberKit을 사용하여 전화번호 입력시 입력 차단하기

전화번호 입력 시, 유효한 전화번호 형식이 아닌 경우 입력을 차단하는 방법에 대해 알아보겠습니다. 이를 위해 Swift에서 제공되는 PhoneNumberKit이라는 라이브러리를 사용할 것입니다.

PhoneNumberKit이란?

PhoneNumberKit은 Swift로 작성된 전화번호 parsing 라이브러리로, 전세계의 다양한 전화번호 형식을 처리할 수 있습니다. 전화번호를 parsing하고, 유효성을 검사하고, 포맷팅 하는 등 다양한 기능을 제공합니다.

PhoneNumberKit 설치하기

PhoneNumberKit을 사용하기 위해서는 먼저 프로젝트에 해당 라이브러리를 추가해야 합니다. 가장 흔히 사용되는 CocoaPods를 이용하여 추가할 수 있습니다.

  1. Podfile 파일을 열고 다음 내용을 추가합니다:
pod 'PhoneNumberKit'
  1. 터미널에서 다음 명령을 실행하여 의존성을 설치합니다:
$ pod install
  1. 이후 .xcworkspace 파일을 열어서 작업하면 됩니다.

전화번호 유효성 검사하기

PhoneNumberKit을 사용하여 전화번호 입력의 유효성을 검사하는 방법은 간단합니다.

import PhoneNumberKit

let phoneNumberKit = PhoneNumberKit()

do {
    let phoneNumber = try phoneNumberKit.parse("+821012345678")
    print("유효한 전화번호입니다.")
} catch {
    print("유효하지 않은 전화번호입니다.")
}

위의 코드에서 “+821012345678”은 검사할 전화번호입니다. parse 메서드를 통해 전화번호를 파싱하고, 유효한 전화번호인지 여부를 확인합니다. 유효한 전화번호인 경우에는 “유효한 전화번호입니다.”가 출력되고, 그렇지 않은 경우에는 “유효하지 않은 전화번호입니다.”가 출력됩니다.

전화번호 입력 차단하기

유효한 전화번호인지 아닌지를 파악하는 방법을 알았으므로, 이를 활용하여 전화번호 입력을 차단할 수 있습니다. 예를 들어, UITextField의 입력을 감지하여 유효하지 않은 전화번호인 경우에는 입력을 막을 수 있습니다.

import PhoneNumberKit

let phoneNumberKit = PhoneNumberKit()

@IBOutlet weak var phoneNumberTextField: UITextField!

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let currentText = (textField.text ?? "") as NSString
    let updatedText = currentText.replacingCharacters(in: range, with: string)
    
    do {
        let phoneNumber = try phoneNumberKit.parse(updatedText)
        return true
    } catch {
        return false
    }
}

위의 코드는 UITextFieldDelegate 프로토콜을 채택하여 textField의 입력을 감지합니다. shouldChangeCharactersIn 메서드가 호출될 때, 변경된 문자열을 파싱하여 유효한 전화번호인지 여부를 판단합니다. 유효한 전화번호인 경우 true를 반환하여 입력이 허용되고, 유효하지 않은 전화번호인 경우 false를 반환하여 입력을 차단합니다.

이제 위의 코드를 적용하면, 유효하지 않은 전화번호가 입력되지 않도록 차단할 수 있습니다.

참고 자료