В текстовом поле iPhone только один тип ввода - PullRequest
2 голосов
/ 09 февраля 2012

У меня есть несколько текстовых полей в моем проекте.

Я хочу, чтобы типы ввода текстовых полей были только одного типа. Например, текстовое поле номера кредитной карты должно содержать только десятичные дроби, и пользователь вводит другой тип символа, он будет удален или не будет принят в текстовом поле.

Извините, мой плохой английский.

Ответы [ 3 ]

3 голосов
/ 09 февраля 2012

Вы должны использовать textField: shouldChangeCharactersInRange: replaceString: в делегате textField, возвращая YES или NO для любого изменения. Вы можете проанализировать replaceString на наличие запрещенных символов и отклонить их, если они найдены.

0 голосов
/ 01 мая 2012

вы можете объявить как показано ниже и использовать

#define LEGAL   @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "


// allow only legal letters
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:LEGAL] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
}

и мы можем использовать это также

entryField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
0 голосов
/ 09 февраля 2012

Если вы создали UITextField по коду, то вам необходимо установить следующее:

textField.keyboardType = UIKeyboardTypeNumberPad;

...