[swift] PhoneNumberKit을 사용하여 전화번호에 관련된 기본 입력 규칙 설정하기

전화번호 입력 필드를 개발하다 보면, 사용자가 올바른 형식의 전화번호를 입력할 수 있도록 기본 입력 규칙을 설정해야 할 때가 있습니다. Swift에서는 PhoneNumberKit이라는 라이브러리를 사용하여 이러한 기능을 쉽게 구현할 수 있습니다.

PhoneNumberKit 소개

PhoneNumberKit은 Swift에서 쉽게 전화번호를 관리하고 처리할 수 있는 라이브러리입니다. 이 라이브러리는 전화번호의 형식을 확인하거나, 전화번호를 parsing하여 전화번호 형식에 맞게 표시하는 등의 기능을 제공합니다.

PhoneNumberKit 설치하기

PhoneNumberKit을 사용하기 위해서는 CocoaPods나 Swift Package Manager를 통해 프로젝트에 라이브러리를 추가해야 합니다.

CocoaPods를 사용할 경우

Podfile에 다음과 같이 추가한 후, pod install 명령어를 실행합니다.

pod 'PhoneNumberKit'

Swift Package Manager를 사용할 경우

Xcode에서 프로젝트를 열고 File -> Swift Packages -> Add Package Dependency를 선택합니다. 그리고 URL에 다음을 입력하고 Next를 클릭합니다.

https://github.com/marmelroy/PhoneNumberKit.git

기본 입력 규칙 설정하기

PhoneNumberKit을 사용하여 전화번호에 관련된 기본 입력 규칙을 설정하는 방법은 다음과 같습니다.

import PhoneNumberKit

let phoneNumberKit = PhoneNumberKit()
let textField = UITextField()

// 키보드 타입을 숫자 패드로 설정
textField.keyboardType = .numberPad

// 전화번호 입력 시 자릿수 제한
let maxLength = phoneNumberKit.maximumPhoneNumberLength
textField.addTarget(self, action: #selector(formatPhoneNumber(_:)), for: .editingChanged)

@objc func formatPhoneNumber(_ textField: UITextField) {
    guard let text = textField.text else { return }
    
    if text.count > maxLength {
        let truncatedText = text.prefix(maxLength)
        textField.text = String(truncatedText)
    } else {
        do {
            let formattedText = try phoneNumberKit.format(text, toType: .e164)
            textField.text = formattedText
        } catch {
            // 유효한 전화번호가 아닌 경우 처리
        }
    }
}

위의 코드에서는 UITextField에서 전화번호를 입력 받을 때, 자릿수 제한과 전화번호 형식을 지정해주는 기능을 구현하였습니다. formatPhoneNumber 메소드는 textField의 텍스트가 변경될 때마다 호출되어 입력된 전화번호를 형식에 맞게 포맷팅하고, 지정한 자릿수를 초과하면 자르는 기능을 구현하였습니다.

PhoneNumberKit을 사용하여 전화번호 입력 필드를 구현할 때, 위의 코드를 참고하여 기본 입력 규칙을 설정해 보세요.

참고 자료