Копирование и вставка текста iOS из Pasteboard некоторое время работает нормально, через какое-то время исчезает в текстовом просмотре.

Я реализовал копирование и вставку с монтажного стола пользовательского интерфейса, а затем отобразил первые 300 символов. Я отключил эмодзи от копирования и вставки. Проблема возникает только в первый раз, после чего все работает нормально. Некоторое время он работает нормально, но какое-то время он вставлялся правильно, а через некоторое время удалял вставленный текст. Та же проблема в iOS 12,13.6

Вот мой код: -

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        
                if let paste = UIPasteboard.general.string, text == paste {
                    print("paste")
                    if (textView.text + text).containsEmoji(){
                        return false
                    }else{
                        return true
                    }
               }
               return textView.text.count + (text.count - range.length) <= 300}
    
    
        func textViewDidChange(_ textView: UITextView){
        if textView.text.count >= 300{
            let trimString = String(textView.text.prefix(300))
           textView.text = trimString
           }
        }

person Gobinder Singh    schedule 10.09.2020    source источник


Ответы (1)


Если вам нужны только первые 300 символов, тогда ваша префиксная функция должна принимать '300', а не '320' ...

func textViewDidChange(_ textView: UITextView){
    if textView.text.count >= 300{
        let trimString = String(textView.text.prefix(300)) // <- try this
       textView.text = trimString
    }
}

Редактировать

Кроме того, последний оператор возврата в shouldChangeTextIn должен иметь значение false, если вы не хотите заменять строку чем-то, что не соответствует монтажному столу. Это могло быть твоей проблемой.

person Weston A Mitchell    schedule 10.09.2020
comment
Я обновил последнюю строку в shouldChangeTextIn, а также обновил в приведенном выше коде, это все еще не решило проблему. - person Gobinder Singh; 11.09.2020