Определить, скопировал ли пользователь текст из текстового поля - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу использовать слово, которое пользователь копирует из текстового поля моего приложения.

Я нашел этот код:

NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)

Но функция clipboardChanged не вызывается при копировании текста из текстового поля.

Я пользуюсь Swift 4.2

1 Ответ

0 голосов
/ 15 декабря 2018

Этот код отлично работал для меня:

    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

...