【发布时间】:2012-03-01 17:44:27
【问题描述】:
我的项目中有一些文本字段。
我希望文本字段的输入类型只有一种。例如信用卡号文本字段的输入只能是小数并且用户输入另一个类型字符,它将在文本字段中删除或不接受。
对不起,我的英语不好。
【问题讨论】:
我的项目中有一些文本字段。
我希望文本字段的输入类型只有一种。例如信用卡号文本字段的输入只能是小数并且用户输入另一个类型字符,它将在文本字段中删除或不接受。
对不起,我的英语不好。
【问题讨论】:
您必须在 textField 的委托中使用 textField:shouldChangeCharactersInRange:replacementString:,对任何更改都返回 YES 或 NO。您可以分析 replacementString 中的禁用字符,如果发现则拒绝它。
【讨论】:
如果你已经通过代码创建了UITextField,那么你需要进行如下设置:
textField.keyboardType = UIKeyboardTypeNumberPad;
【讨论】:
你可以像下面这样声明并使用
#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;
【讨论】: