Как подсчитать количество слов в UITextField во время набора текста (Swift)? - PullRequest
0 голосов
/ 11 октября 2018

Я искал все.Я хочу посчитать количество слов в текстовом поле.Есть много решений для персонажей, но не для слов.Пожалуйста, предоставьте это.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Для этого установите UITextFieldDelegate на свой контроллер представления и реализуйте метод: -

myTextfield.delegate = self // In Your View Controller

Затем

extension myViewController : UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if let _ = textField.text{
            let text = textField.text! as NSString
            let fullText = text.replacingCharacters(in: range, with: string)
            let wordCount = fullText.components(separatedBy: " ").count
            print(wordCount)
        }
        return true
    }

} 
0 голосов
/ 11 октября 2018

Попробуйте это решение, чтобы найти количество слов в UITextField, нет необходимости устанавливать какой-либо делегат на UITextField.Просто возьмите отредактированный выпуск события UITextField из Xib и все готово.Проверьте изображение ниже.

enter image description here

И просто добавьте приведенный ниже код для метода розетки.

@IBAction func tfEditingChanged(_ sender: UITextField) {
        if let string = sender.text {
            let st1 = string.trimmingCharacters(in: .whitespacesAndNewlines)
            if !st1.isEmpty { // Prints number of words.
                print("count words= \(st1.components(separatedBy: " ").count)")
            }
            else {
                print("count words = 0")
            }
        }
    }

Если вы неиспользуя Xib программно, вы также можете зарегистрироваться для editingChanged события UITextField, как показано ниже.

yourTextField.addTarget(self, action: #selector(tfEditingChanged(_:)), for: .editingChanged)

Надеюсь, это поможет.

0 голосов
/ 11 октября 2018

Поместите значение текстового поля в строку и сосчитайте их с помощью пробела ""

let text: String = textfieldvalue

print(text.componentsSeparatedByString(" ").count)
...