Mam UITextFieldDelegate, który wykonuje całą masę sprawdzania poprawności na dane wejściowe użytkownika, aby określić, czy powinny one mieć możliwość zakończenia edycji. W jednym konkretnym przykładzie nie można pozostawić pustego pola.Wykrywanie zmian tekstu UITextField z powodu cofnięcia Shake'a?
W tej chwili używam textField:shouldChangeCharactersInRange:replacementString:
do sprawdzania poprawności wprowadzania tekstu po każdej edycji przez użytkownika.
Problem polega na tym, że jeśli użytkownik wyczyści pole (za pomocą małego przycisku "x"), kod walidacji przechodzi w tryb "nieprawidłowy" i uniemożliwia użytkownikowi nawigację, dopóki nie wprowadzą poprawnego tekstu. Jeśli użytkownik potrząsa telefonem, aby odzyskać stary tekst, shouldChangeCharactersInRange
nie zostanie ponownie wywołany, a uczestnik pozostanie w stanie "nieprawidłowym", zamiast rozpoznać, że wszystko jest w porządku.
Nie jestem pewien, czy używam go poprawnie, ale wygląda na to, że wbudowana maszyna UITextFieldDelegate nie jest w stanie poradzić sobie ze zmianami tekstu z powodu cofnięcia/ponowienia.
Jaki jest najlepszy sposób, aby uzyskać prawidłową walidację w tym scenariuszu? Czy naprawdę potrzebuję podklasy UITextField w celu implementacji motionEnded:withEvent:
? Wygląda na to, że rzeczy do edycji w UITextField powinny być naprawdę niezależne od tego, czy użytkownik rzeczywiście je wpisał, czy też stało się to z powodu cofnięcia, więc byłby oszołomiony, gdybym rzeczywiście musiał iść tą drogą.
Doskonale, dzięki. Działa jak uczta i jest o wiele prostsze niż implementacja 'shouldChangeCharactersInRange' oraz' textFieldShouldClear', co wcześniej robiłem. Westchnienie ulgi! – glenc