może mi ktoś w tym pomóc: muszę wprowadzić UITextField
dla numeru wejścia. Ta liczba powinna zawsze być w formacie dziesiętnym z 4 miejscami, np. 12.3456 lub 12.3400. Stworzyłem więc NSNumberFormatter
, który pomaga mi w miejscach dziesiętnych.jak przenieść kursor w UITextField po ustawieniu jego wartości
ja ustawienie wartości UITextField
w
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
metody. Przetwarzam dane wejściowe, używam formatera i na koniec wywołuję [textField setText: myFormattedValue];
Działa to dobrze, ale to wywołanie powoduje również przesunięcie kursora na koniec mojego pola. To niechciane. Na przykład. Mam 12.3400 w moim polu, a kursor znajduje się na samym początku, a typy użytkowników 1. Wartość wyniku to 112.3400, ale kursor jest przesuwany na końcu. Chcę zakończyć kursorem, gdy użytkownik tego oczekuje (zaraz po dodaniu ostatnio dodanego numeru 1). Istnieją pewne tematy dotyczące ustawiania kursora w TextView
, ale jest to UITextField
. Próbowałem również złapać selectedTextRange
pola, które zapisuje pozycję kursora poprawnie, ale po wywołaniu metody setText
, to automatycznie zmienia się i pochodzenie UITextRange
zostaje utracone (zmienione na bieżące). mam nadzieję, że moje wyjaśnienie jest jasne.
Proszę, pomóż mi z tym. Dziękuję Ci bardzo.
EDIT: W końcu zdecydowałem się przełączyć funkcjonalność na zmianę formatu po całej edycji i działa wystarczająco dobrze. Zrobiłem to przez dodanie selektora forControlEvents:UIControlEventEditingDidEnd
.
Kiedy czytasz 'selectedTextRange', nie możesz skopiować go jako właściwość w klasie, który działa jako' UITextFieldDelegate' a następnie ponownie zestaw to po 'setText:'? –
Phillip, to nie działa.Po ustawieniu tekstu za pomocą setText, zmienna UITextRange, którą zebrałeś przed ustawieniem tekstu, zostanie zresetowana do wartości null, a więc nie będzie można ponownie zastosować go do ukończonego UITextField. – JasonD