Я пытаюсь добавить атрибут фона к своему NSMutableAttributedString
для определенного диапазона, который работает нормально, если начальный диапазон равен 0. Всякий раз, когда я пытаюсь передать индекс функции, к которой добавляется фоннамного больше текста, чем предполагалось.
Вот видео, демонстрирующее проблему.Всякий раз, когда пользователь пишет неправильное письмо, появляется проблема.
Видео демонстрация
Код:
var index = 0
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
guard let char = string.cString(using: String.Encoding.utf8) else { return true }
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92)
{
addBackground(color: .clear, from: index - 1, to: index)
index -= 1
}
else
{
if charactersDoesMatch(char: string, i: index)
{
addBackground(color: .green, from: 0, to: index + 1)
}
else
{
//As you can see im trying to add it from the current index to the next one only.
addBackground(color: .red, from: index, to: index + 1)
}
index += 1
}
return true
}
private func addBackground(color: UIColor, from: Int, to: Int)
{
attributedText?.addAttribute(NSAttributedStringKey.backgroundColor, value: color, range: NSMakeRange(from, to))
toTypelabel.attributedText = attributedText
}