может кто-нибудь мне помочь в этом: мне нужно реализовать UITextField
для ввода номера. Это число всегда должно быть в десятичном формате с 4 местами, например. 12.3456 или 12.3400. Итак, я создал NSNumberFormatter
, который помогает мне с десятичными знаками.как перемещать курсор в UITextField после установки его значения
Я устанавливаю значение UITextField
в
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
метода. I вход proccess, использование форматирования и, наконец, звонок [textField setText: myFormattedValue];
Это прекрасно работает, но этот вызов также перемещает курсор в конец моего поля. Это нежелательно. Например. У меня 12.3400 в моем поле, и курсор находится в самом начале и пользовательских типов номер 1. Значение результата равно 112.3400, но курсор перемещается в конце. Я хочу завершить курсор, когда пользователь ожидает (сразу после добавления номера 1). Есть несколько тем, касающихся установки курсора в TextView
, но это UITextField
. Я также попытался поймать поле selectedTextRange
, которое сохраняет позицию курсора правильно, но после вызова setText
это автоматически изменяется, а источник UITextRange
теряется (изменен на текущий). надеюсь, мои объяснения понятны.
Пожалуйста, помогите мне с этим. Большое спасибо.
EDIT: Наконец, я решил переключить функциональность на изменение формата после полного редактирования и работает достаточно хорошо. Я сделал это, добавив селектор forControlEvents:UIControlEventEditingDidEnd
.
Когда вы читаете 'selectedTextRange', вы можете не копировать его как свойство в классе, который действует как' UITextFieldDelegate', а затем повторно установить это после 'setText:'? –
Phillip, это не работает.После того, как вы установили текст с помощью setText, UITextRange, который вы собрали перед установкой текста, сбрасывается в нуль, и поэтому вы не можете повторно применить его к завершенному UITextField. – JasonD