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