ReactiveCocoa / ReactiveSwift получить последний входной символ UITextField - PullRequest
0 голосов
/ 20 марта 2020

Я довольно новичок в программировании Reactive, поэтому не судите меня слишком сильно :). Я много копал в inte rnet и не могу найти решение. Я пробовал разные комбинации, но не повезло. Итак, чего я пытаюсь достичь: в classi c Swift / Objective C у нас есть этот метод делегата для UITextField func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool, в котором последний параметр string возвращает только последний входной символ.

С помощью сигнала continuousTextValues я всегда получаю весь текст в текстовом поле, и хотя я могу map вернуть только последний символ, я все равно не могу обнаружить backspace

Как можно Ли я достичь этого с ReactiveSwift / ReactiveCocoa? Вот что я сделал:

    digitTextField1.reactive.continuousTextValues.map { (text) -> String in
        if let lastChar = text.last {
            return String(lastChar)
        }
        return ""
    }.observeValues { [unowned self] (lastCharacterString) in
        guard var textField1Text = self.digitTextField1.text else { return }
        if textField1Text.count <= 1 && !lastCharacterString.isEmpty {

        } else if textField1Text.count >= 1 && lastCharacterString.isEmpty {
            // lastCharacterString is never empty if there is something I want to delete                
        }
    }

Любая помощь приветствуется.

PS Это мне кажется очень легко решаемым, но я борюсь с этим:)

...