Проверьте, содержит ли строка буквы, и отмените их - PullRequest
0 голосов
/ 11 декабря 2010


У меня есть UITextField, и мне нужно разрешить вводить только цифры, запятую или точку в этом поле.
Как я могу проверить, содержит ли эта строка какой-либо символ вместо указанных выше, и как я могу заменить / удалить их?

В моем поле будет храниться стоимость, и мне нужны только цифры, запятая или точка ...

Кто-нибудь может мне помочь?
Спасибо!

Ответы [ 4 ]

2 голосов
/ 11 декабря 2010

Для текстового поля вы можете использовать UITextFieldDelegate и реализовать метод textField:shouldChangeCharactersInRange:replacementString:. Согласно документации, «текстовое поле вызывает этот метод всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ». В этом методе вы должны проверить все нечисловые символы и удалить их.

1 голос
/ 11 декабря 2010

Вы можете использовать метод -textFieldDidEndEditing: из протокола UITextFieldDelegate. Этот метод вызывается всякий раз, когда текстовое поле подает в отставку статус первого респондента (то есть заканчивает редактирование). Это шанс проверить введенную строку. Если вы хотите выполнить проверку после каждого введенного символа, используйте -textField:shouldChangeCharactersInRange:replacementString:, как предлагает donkim.

0 голосов
/ 11 декабря 2010

Вы можете сделать это, отслеживая ввод пользователя в поле и автоматически удаляя несовпадающие символы. Создайте метод IBAction:

- (IBAction)validateEntry:(id)sender;

затем присоедините его к событию Editing Changed текстового поля. Метод будет вызываться каждый раз, когда изменяется текст в поле, будь то пользователь, набравший текст, или пользователь, вставивший текст в.

Внутри метода вы можете изучить текст и удалить оскорбительные символы или, что более вежливо, обновить UILabel, который сообщает пользователю, что он ввел недопустимые символы, и отключить все кнопки отправки, пока он не будет исправлен.

0 голосов
/ 11 декабря 2010

Вместо этого, чтобы проверить строку, почему нельзя присвоить значение клавиатуры текстового поля как NumberPad. Так что пользователь не сможет набрать строку.

...