Я пытаюсь применить стили NSAttributedString к UITextField после обработки новой текстовой записи нажатием клавиши нажатием клавиши. Проблема в том, что в любое время, когда я заменяю текст, курсор перескакивает с самого конца при каждом изменении. Вот мой нынешний подход...
Получить и отобразить изменение текста немедленно (та же проблема применяется, когда я возвращаю false и выполняю ручную замену текста)
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let range:NSRange = NSRange(location: range.location, length: range.length)
let newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string);
return true
}
Я подписался на уведомление UITextFieldTextDidChangeNotification. Это вызывает стилизацию. Когда текст изменен, я заменяю его (NSString) форматированной версией ( NSAttributedString) с помощью некоторой функции format().
func textFieldTextDidChangeNotification(userInfo:NSDictionary) {
var attributedString:NSMutableAttributedString = NSMutableAttributedString(string: fullString)
attributedString = format(textField.text) as NSMutableAttributedString
textField.attributedText = attributedString
}
Стилирование отлично работает. Однако после каждой замены текста курсор переходит к концу строки. Как я могу отключить это поведение или вручную переместить курсор туда, где он начал редактирование?... или есть лучшее решение для стилизации текста во время редактирования?