Я довольно новичок в программировании 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 Это мне кажется очень легко решаемым, но я борюсь с этим:)