Переопределение метода вставки UITextView - PullRequest
0 голосов
/ 22 февраля 2010

Я действительно хочу иметь возможность обнаружить событие вставки в UITextView, однако, похоже, это невозможно.

Первоначально я пытался создать подкласс UITextView и переопределить метод paste:, но он никогда не вызывался при вставке события.

Кто-нибудь смог это сделать? На предыдущий вопрос того же рода не было ответа еще в августе ...

Ответы [ 3 ]

1 голос
/ 23 мая 2013

@ KennyTM то, что я сделал для одного из моих приложений, было в курсе текущей длины текста и предыдущей длины текста. Если (currentTextLength - previousTextLength) было больше 1, то пользователь, должно быть, вставил что-то

1 голос
/ 22 февраля 2010

Текстовое представление не перехватывает событие paste:, потому что это был не фактический ответчик, это не текстовое представление, а частное веб-представление (UIWebDocumentView), которое поддерживает текстовое представление.

Однако при вставке веб-представление вызовет текстовое представление (личное) -[UITextView keyboardInput:shouldInsertText:isMarkedText:], и, в свою очередь, делегат текстового представления -textView:shouldChangeTextInRange:replacementText:.

Поэтому вам просто нужно реализовать -textView:shouldChangeTextInRange:replacementText: в делегате текстового представления.

(Конечно, нормальный ввод с клавиатуры также вызывает этот метод. Нет идеального способа их различить.)

0 голосов
/ 20 января 2016

Чтобы определить, выполняет ли пользователь синтаксический анализ текста в textView, сравните замещающий текст в делегате shouldChangeTextInRange с текстом, который пользователь в данный момент хранит в UIPasteboard. Затем примите меры в зависимости от требований.

для кода, см. Мой ответ в следующем вопросе:

как узнать, когда текст вставляется в UITextView

...