ukSeung iOS

[Swift] JSPhoneFormat 휴대폰번호 포맷팅 본문

iOS/Library

[Swift] JSPhoneFormat 휴대폰번호 포맷팅

욱승 2023. 2. 20. 11:10

안녕하세요 욱승입니다.

이번 포스팅에서는 휴대폰번호 포맷팅을 해주는 라이브러리가 있어 설명드립니다. 회원가입이나 휴대폰 번호를 입력 받을때 유용한 라이브러리 입니다. 하지만 보통 textfield를 세개로 나누어 010, 1234, 1234 입력 받지만 그렇지 않은 경우에는 이 라이브러리가 유용하니 참고바랍니다!

 

환경

  • iOS9.0이상
  • Swift4

Podfile

 

사용법

import
JSPhoneFormat 생성과 동시에 초기화
textField에 editingChanged 적용(값이 바뀔때마다 호출됨)
주의 깊게 보셔야할 코드는 51라인 입니당

54 ~ 56라인은 최대 입력 제한을 걸어두는 로직입니당 

13자리 까지만 입력이되니 입력후 서버 혹은 다른곳에 저장될때 오입력된 값이 들어오지 않겠죠?

 

전체 예제코드

//
//  ViewController.swift
//  JSPhoneFormat
//
//  Created by plsystems on 2023/02/20.
//

import UIKit
import SnapKit
import Then
import JSPhoneFormat

protocol ViewAttributes {
    func setUI()
    func setAttributes()
}

class ViewController: UIViewController, UITextFieldDelegate, ViewAttributes{
    
    let phoneFormat = JSPhoneFormat.init(appenCharacter: "-") // 구분 Character
    
    lazy var labelThen = UITextField().then {
        $0.placeholder = "휴대폰 번호 입력"
        $0.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setUI()
        setAttributes()
    }
    
    func setUI() {
        
        self.view.addSubview(labelThen)
    }
    
    func setAttributes() {
        
        labelThen.snp.makeConstraints {
            $0.centerX.centerY.equalTo(self.view.safeAreaLayoutGuide)
        }
    }
    
    @objc func editingChanged(_ sender: Any){
        guard let textField = sender as? UITextField ,let text = textField.text else{ return }
        
        // PhoneNumber Formatting Formatting
        textField.text = phoneFormat.addCharacter(at: text)
        
        // MaxLength 제한 ('/' 구분선 포함 13자리)
        if text.count > 13 {
            textField.deleteBackward()
        }
    }
}

 

 

결과

 

결론

앞서 말했듯이 요즘은 TextField하나에 휴대폰 번호를 전체다 입력 받을일이 많지 않은데, 혹시 모르니 알아두면 좋은 라이브러리 인것 같다.

샤라웃 JSPhoneFormat

그럼 20000 태클 환영ㅋ

 

Reference

 

GitHub - JeaSungLEE/JSPhoneFormat: 한국전화번호 체계에 맞는 구분

한국전화번호 체계에 맞는 구분 . Contribute to JeaSungLEE/JSPhoneFormat development by creating an account on GitHub.

github.com

 

 

728x90
반응형