Swift 4
Вы можете получить доступ к общему картону со следующей строкой:
let generalPasteboard = UIPasteboard.general
В контроллере представления вы можете добавить наблюдателя, чтобы наблюдать, когда что-то копируется в монтажный картон.
override func viewDidLoad() {
super.viewDidLoad()
// https://stackoverflow.com/questions/35711080/how-can-i-edit-the-text-copied-into-uipasteboard
NotificationCenter.default.addObserver(self, selector: #selector(pasteboardChanged(_:)), name: UIPasteboard.changedNotification, object: generalPasteboard)
}
override func viewDidDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(UIPasteboard.changedNotification)
super.viewDidDisappear(animated)
}
@objc
func pasteboardChanged(_ notification: Notification) {
print("Pasteboard has been changed")
if let data = generalPasteboard.data(forPasteboardType: kUTTypeHTML as String) {
let dataStr = String(data: data, encoding: .ascii)!
print("data str = \(dataStr)")
}
}
В вышеупомянутой функции pasteboardChanged я получаю данные в виде HTML, чтобы отобразить скопированный форматированный текст во втором контроллере в WKWebView.Вы должны импортировать MobileCoreServices для ссылки на UTI kUTTypeHTML.Чтобы увидеть другие UTI, перейдите по следующей ссылке: Apple Developer - Типы текста UTI
import MobileCoreServices
В своем первоначальном вопросе вы упомянули, что хотите поместить скопированный контент во второе текстовое представление,Если вы хотите сохранить форматирование, вам нужно будет получить скопированные данные как RTFD, а затем преобразовать их в приписанную строку.Затем настройте текстовое представление для отображения атрибутивной строки.
let rtfdStringType = "com.apple.flat-rtfd"
// Get the last copied data in the pasteboard as RTFD
if let data = pasteboard.data(forPasteboardType: rtfdStringType) {
do {
print("rtfd data str = \(String(data: data, encoding: .ascii) ?? "")")
// Convert rtfd data to attributedString
let attStr = try NSAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtfd], documentAttributes: nil)
// Insert it into textview
print("attr str = \(attStr)")
copiedTextView.attributedText = attStr
}
catch {
print("Couldn't convert pasted rtfd")
}
}
Поскольку я не знаю вашего точного проекта или варианта использования, поэтому вам может потребоваться немного изменить код, но я надеюсь, что предоставил вам кусочки, которые вынужно для проекта.Пожалуйста, прокомментируйте, если я что-то пропустил.