Cách sao chép văn bản vào clipboard / pasteboard với Swift


183

Tôi đang tìm một ví dụ rõ ràng về cách sao chép văn bản vào bảng tạm iOS có thể được sử dụng / dán trong các ứng dụng khác.

Lợi ích của chức năng này là văn bản có thể được sao chép nhanh chóng, không có chức năng tô sáng văn bản tiêu chuẩn của sao chép văn bản truyền thống.

Tôi giả sử rằng các lớp chính đang ở UIPasteboard, nhưng không thể tìm thấy các khu vực liên quan trong ví dụ mã mà họ cung cấp .


Câu trả lời:


444

Nếu tất cả những gì bạn muốn là văn bản đơn giản, bạn chỉ có thể sử dụng stringtài sản . Nó vừa có thể đọc và ghi được:

// write to clipboard
UIPasteboard.general.string = "Hello world"

// read from clipboard
let content = UIPasteboard.general.string

(Khi đọc từ bảng ghi tạm, tài liệu UIPasteboard cũng gợi ý bạn có thể muốn kiểm tra trước hasStrings, "để tránh khiến hệ thống cố gắng tìm nạp dữ liệu trước khi cần hoặc khi dữ liệu có thể không xuất hiện", chẳng hạn như khi sử dụng Handoff .)


Điều này có thể hoạt động tốt, nhưng không phải người dùng có hình ảnh hoặc tệp trong nội dung được sao chép?
người chiến thắng

UIPasteboard.general.stringhoạt động trong swift 4.x quá
spnkr

Làm thế nào tôi có thể sao chép phông chữ với kiểu phông chữ?
Krunal Nagvadia

56

Vì sao chép và dán thường được thực hiện theo cặp, đây là câu trả lời bổ sung cho @jtbandes câu trả lời hay, ngắn gọn. Ban đầu tôi đến đây tìm cách dán.

iOS làm cho điều này trở nên dễ dàng bởi vì bảng điều khiển chung có thể được sử dụng như một biến. Chỉ cần nhận và thiết lập UIPasteboard.general.string.

Dưới đây là một ví dụ cho thấy cả hai đang được sử dụng với UITextField:

Sao chép

UIPasteboard.general.string = myTextField.text

Dán

if let myString = UIPasteboard.general.string {
    myTextField.insertText(myString)
}

Lưu ý rằng chuỗi pasteboard là một Tùy chọn, vì vậy nó phải được mở ra trước tiên.


Làm thế nào tôi có thể sao chép văn bản với phong cách phông chữ. Vì vậy, tôi có thể sử dụng kiểu chữ đó
Krunal Nagvadia

@KrunalNagvadia, Bạn không thể sao chép văn bản với kiểu phông chữ, nhưng bạn có thể lấy thông tin phông chữ bằng myTextField.font. Bạn có thể lưu thông tin đó một cách riêng biệt và áp dụng nó ở một nơi khác.
Suragch

được chứ nếu tôi sao chép văn bản từ Ứng dụng của mình và dán vào WhatsApp hoặc Bất kỳ ứng dụng nào khác thì nó có hỗ trợ kiểu không?
Krunal Nagvadia

@KrunalNagvadia, Không, hệ thống iOS UIPasteboardkhông hỗ trợ kiểu dáng. Bạn chỉ có thể xử lý kiểu dáng trong ứng dụng của riêng bạn.
Suragch

7

Sao chép văn bản từ ứng dụng vào bảng tạm:

let pasteboard = UIPasteboard.general
pasteboard.string = employee.phoneNumber

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.