투케이2K

656. (ios/swift5) [간단 소스] IOS UITextField 에서 클립 보드 복사 (Copy) , 붙여넣기 (Paste) 기능 막기 방법 본문

IOS

656. (ios/swift5) [간단 소스] IOS UITextField 에서 클립 보드 복사 (Copy) , 붙여넣기 (Paste) 기능 막기 방법

투케이2K 2026. 5. 25. 10:50
728x90
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift5


- 개발 툴 : Xcode


- 기술 구분 : UITextField / Copy / Paste


- 사전) 👉 클립 보드 기능 간략 설명 : 

  >> 클립보드 (Clipboard) 는 운영체제가 제공하는 임시 데이터 저장 공간입니다.

  >> 클립보드 (Clipboard) 는 사용자가 복사(Copy), 잘라내기(Cut), 붙여넣기(Paste)를 수행할 때 데이터를 잠시 보관하는 역할을 합니다.

  >> 클립보드 동작 구조 : 

    복사(Copy)
    ↓
    클립보드에 저장
    ↓
    붙여넣기(Paste)
    ↓
    다른 앱/위치에 데이터 전달  


- 사전) 👉 UITextField 간략 설명 : 

  >> UITextField 는 iOS 에서 사용자가 한 줄 (single-line) 텍스트를 입력할 수 있는 UI 컴포넌트입니다.

    - 안드로이드의 EditText 와 비슷한 역할을 합니다.

  >> UITextField 대표적인 사용 예:

    - 로그인 아이디 입력
    - 비밀번호 입력
    - 검색창
    - 전화번호 입력
    - OTP 인증번호 입력

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

class SecureTextField: UITextField { // 👉 UITextField를 상속(:) 받음

    override func canPerformAction( // 👉 canPerformAction : iOS가 메뉴 항목을 보여줄지 결정할 때 호출됩니다.
        _ action: Selector,
        withSender sender: Any?
    ) -> Bool {

        // 👉 복사 → 차단
        // 👉 붙여넣기 → 차단
        // 👉 잘라내기 → 차단
        // 👉 선택 → 차단
        // 👉 나머지 시스템 동작 → 기본 동작 유지

        if action == #selector(copy(_:)) ||
           action == #selector(paste(_:)) ||
           action == #selector(cut(_:)) ||
           action == #selector(select(_:)) ||
           action == #selector(selectAll(_:)) {

            return false
        }

        return super.canPerformAction(
            action,
            withSender: sender
        )
    }
}

let passwordField = SecureTextField()

passwordField.isSecureTextEntry = true // → 비밀번호 마스킹
passwordField.textContentType = .password
passwordField.autocorrectionType = .no // → 자동 수정 비활성화
passwordField.spellCheckingType = .no // → 맞춤법 검사 비활성화
passwordField.smartQuotesType = .no // → 스마트 따옴표 변환 방지
passwordField.smartDashesType = .no

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

▶️ [UITextField 텍스트 필드 shouldChangeCharactersIn 사용해 실시간 입력 글자 확인 실시]

https://kkh0977.tistory.com/2798

https://blog.naver.com/kkh0977/222899091972?trackingCode=blog_bloghome_searchlist


▶️ [UIPasteboard.general.image 사용해 클립보드에 이미지 복사 및 imageView 이미지 뷰에 표시 실시]

https://kkh0977.tistory.com/3217

https://blog.naver.com/kkh0977/222925445890?trackingCode=blog_bloghome_searchlist


▶️ [유틸 파일] setClipboard : 클립 보드 데이터 저장 - UIPasteboard.general.string

https://kkh0977.tistory.com/4858

https://blog.naver.com/kkh0977/223261910867?trackingCode=blog_bloghome_searchlist


▶️ [클립보드 기능 사용해 데이터 복사 (copy) 실시 - UIPasteboard]

https://kkh0977.tistory.com/1508

https://blog.naver.com/kkh0977/222640886969?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments