Nano Hash - криптовалюты, майнинг, программирование

UITextView .isEmpty не работает при отправке клавиатуры Swift

Иметь UITextView, который отправляет ввод символов с помощью кнопки "Отправить" на клавиатуре. Я пробовал все это ниже, но он по-прежнему работает без символов.

func textView(_ textView: UITextView, shouldChangeTextIn  range: NSRange, replacementText text: String) -> Bool {
    if (text == "\n") {

        if(textView.text != "" || !textView.text.isEmpty){

          print("still printing")
         //**I dont want it to make it here but it does with no characters in textView after clicking send on keyBoard
        //It still makes it here when send button is pressed and textView is null.
            return false
        }

    }
    return true
}

Я пробовал это и многое другое...

if(textView.text != "" || !textView.text.isEmpty || textView.text == nil)


if textView!.text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).isEmpty {
    [...]
}

if (self.textView.text.characters.count > 0) { }

1.) if (text == "\n") означает, что была нажата кнопка "Отправить"

2.) if(textView.text != "") проверяет, является ли textView нулевым

TextView имеет значение null, но все же проходит через операторы if, которые я пробовал выше.

13.03.2018

  • Может быть, проверить это, когда кнопка нажата? 13.03.2018
  • text == \n это когда кнопка нажата 13.03.2018
  • может по какой-то причине отбрасывать его, но я не знаю, я пытался проверить != \n 13.03.2018

Ответы:


1

Чтобы получить новую длину текста, вам нужно использовать значения параметров диапазона и текста следующим образом:

func textView(_ textView: UITextView, shouldChangeTextIn  range: NSRange, replacementText text: String) -> Bool {
    let insertedText = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
    if insertedText.count == 1 {
        textView.text = insertedText
    }

    return false
}

Подробности. shouldChangeTextIn запускается перед изменением текста в UITextView. Это имеет смысл, потому что решение о применении изменения принимается в этой функции shouldChangeTextIn?.

13.03.2018
  • Итак, как мне использовать newLength message.text.character.count › newLength? 13.03.2018
  • вы не учитываете \n или возвращаете true 13.03.2018
  • Я редактирую это. мы принимаем во внимание \n, обрезая пробелы и новые строки 13.03.2018
  • нам не нужно возвращать true. потому что мы сами редактируем текст. textView.text = вставленный текст 13.03.2018
  • функционал работает. Но когда вводятся символы, он выполняет действие \n, а не делает это в 14.03.2018
  • попробуйте сами с текстовым представлением. и кнопка возврата 14.03.2018
  • Я пробовал. он работает нормально, и когда я нажимаю кнопку возврата, ничего не происходит. Разве это не то, что вы хотите? 14.03.2018
  • Я не знаю, почему вы все равно используете textview. вы должны использовать текстовое поле. 14.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..