Skip to content

iOS에서 클립보드로 텍스트 복사하는 방법

1 min read

은행 계좌번호를 복사할 때나 아니면 메시지의 일부 텍스트를 복사하고 싶을 때, 아니면 복사한 문구를 노트에 붙이고 싶을 때 iOS에서 제공하는 UIPasteboard 클래스를 통해서 할 수 있다.

UIPasteboard란?

UIPasteboard는 iOS에서 클립보드 콘텐츠를 관리하기 위한 Apple의 시스템이다. 기기의 여러 앱 간에 복사 및 붙여넣기가 작동하도록 담당한다.

가장 일반적인 클립보드 또는 페이스트보드(pasteboard)는 모든 앱이 접근할 수 있는 일반 시스템 페이스트보드이다. 사용자가 한 앱에서 텍스트를 복사하여 다른 앱에 붙여넣을 때 상호 작용하는 곳이다.

텍스트 복사하기

아래와 같이 간단하게 텍스트 복사하기 기능을 구현할 수 있다.

// 기본 사용법
UIPasteboard.general.string = text

// 함수로 만들어 사용하기
func copyToClipboard(_ text: String) {
    UIPasteboard.general.string = text
}

복사한 텍스트 가져오기

복사한 텍스트를 읽고 싶다면 아래와 같이 옵셔널 언래핑해 가져와서 사용한다.

if let string = UIPasteboard.general.string {
    // 복사한 텍스트가 있다면 string 상수에 할당이 된다
}

활용 팁

사용자 피드백 추가하기

간단한 햅틱을 추가해서 텍스트가 복사되었는지 사용자에게 인식하게 할 수 있다:

func copyWithFeedback(_ text: String) {
    // 텍스트 복사하기
    UIPasteboard.general.string = text
    
    // 햅틱 피드백
    let generator = UINotificationFeedbackGenerator()
    generator.notificationOccurred(.success)
}

여러 항목 복사하기

여러 문구들을 복사하고 싶을 때:

UIPasteboard.general.strings = ["첫 번째 항목", "두 번째 항목"]

만료 시간 설정하기

민감한 정보를 다루고 있다면 만료 시간을 설정할 수 있다:

UIPasteboard.general.setItems([["Sensitive Data": "민감한 데이터"]], 
                             options: [.expirationDate: Date().addingTimeInterval(60)])

이 예제는 복사한 콘텐츠가 60초 후에 만료된다.

민감한 데이터를 복사할 때는 만료 시간을 설정하는 것이 좋다.

다양한 데이터 타입 복사하기

문자열 외에도 이미지나 URL 주소도 복사할 수 있다:

// 이미지 복사
UIPasteboard.general.image = UIImage(named: "스크린샷")

// URL 복사
UIPasteboard.general.url = URL(string: "https://apple.com")

// 여러 타입의 데이터 복사
let item: [String: Any] = [
    UIPasteboard.typeListString[0]: "텍스트",
    UIPasteboard.typeListURL[0]: URL(string: "https://apple.com")!
]
UIPasteboard.general.items = [item]

참고

UIPasteboard | Apple Developer Documentation


Share this post on:

Previous Post
SwiftUI에서 커스텀 버튼 스타일 구현하기
Next Post
UIView의 일부 모서리만 둥근 모서리를 설정하는 방법