Этот код отлично работал для меня:
override func copy(_ sender: Any?) {
super.copy()
}
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)
}
@objc func clipboardChanged(){
print("Cut/Copy Performed")
}
Существует много способов получения уведомления о копировании
1.UIMenuController
Отображение меню с командами «Копировать», «Вырезать», «Вставить», «Выделить» и «Выбрать все» над или под выделением.
См .:
https://developer.apple.com/documentation/uikit/uimenucontroller
https://nshipster.com/uimenucontroller/
2.Протокол UIResponderStandardEditActions
Ответчики реализуют методы, объявленные в этом неофициальном протоколе, для обработки выбранных команд меню (например, copy:
и paste:
).Так как ваш UIViewController
наследуется от UIResponder
, который действительно соответствует UIResponderStandardEditActions
, поэтому он выдаст вам ошибку, сказав Redundant conformance
.Так что просто реализуйте нужные вам методы напрямую.
См .: https://developer.apple.com/documentation/uikit/uiresponderstandardeditactions
3.UIPasteboard changeNotification
class let changedNotification: NSNotification.Name
Это происходит в то же время, когда увеличивается счетчик изменений монтажной панели (свойство changeCount).Изменения включают добавление, удаление и модификацию элементов картона.
См. https://developer.apple.com/documentation/uikit/uipasteboard