检查 UITextfield 只有字母没有数值
Check UITextfield have only Alphabet not numeric value
我正在创建一个表格,如果有人输入数字然后显示警报,我想在名称字段中签入。
代码如下:
NSString *str = abc.text;
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
BOOL valid = [[str stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
if (!(valid))
{
NSLog(@"number present");
}
else
{
NSLog(@"number not present");
}
谢谢
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// you should check if the textfield == your Name Field
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\d{0,9}$" options:0 error:nil];
NSTextCheckingResult *numMatch = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (numMatch) {
// alert here
NSLog(@"number present");
return NO;
} else {
NSLog(@"number not present");
}
return YES;
}
您可以直接处理用户每次按键时的键盘事件
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *alphaSet = [NSCharacterSet decimalDigitCharacterSet];
BOOL isNumber= [[string stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
if(!([textfield.text isEqualToString:@""] || textfield.text== nil )) //empty check
{
if (isNumber) {
// alert here
NSLog(@"Number not alowed");
return NO;
}
}
}
- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {
if (textField == self.txt_Name) {
if(txt_Name.text.length>0)
{
NSCharacterSet *s = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"];
s = [s invertedSet];
NSString *str1 = txt_Name.text;
NSRange r = [str1 rangeOfCharacterFromSet:s];
if (r.location != NSNotFound) {
NSLog(@"the string contains illegal characters");
txt_nameOFInfo.hidden =false;
[img_name setImage:[UIImage imageNamed:@"redot.png"]];
}
else
{
txt_nameOFInfo.hidden =true;
[img_name setImage:[UIImage imageNamed:@"gray-dot.png"]];
}
// NSLog(@"value %@",txt_lastName.text);
}
}
}
使用此代码并将委托添加到您的 UItextfield 我希望它对您有用
我正在创建一个表格,如果有人输入数字然后显示警报,我想在名称字段中签入。
代码如下:
NSString *str = abc.text;
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
BOOL valid = [[str stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
if (!(valid))
{
NSLog(@"number present");
}
else
{
NSLog(@"number not present");
}
谢谢
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// you should check if the textfield == your Name Field
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\d{0,9}$" options:0 error:nil];
NSTextCheckingResult *numMatch = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (numMatch) {
// alert here
NSLog(@"number present");
return NO;
} else {
NSLog(@"number not present");
}
return YES;
}
您可以直接处理用户每次按键时的键盘事件
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *alphaSet = [NSCharacterSet decimalDigitCharacterSet];
BOOL isNumber= [[string stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
if(!([textfield.text isEqualToString:@""] || textfield.text== nil )) //empty check
{
if (isNumber) {
// alert here
NSLog(@"Number not alowed");
return NO;
}
}
}
- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {
if (textField == self.txt_Name) {
if(txt_Name.text.length>0)
{
NSCharacterSet *s = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"];
s = [s invertedSet];
NSString *str1 = txt_Name.text;
NSRange r = [str1 rangeOfCharacterFromSet:s];
if (r.location != NSNotFound) {
NSLog(@"the string contains illegal characters");
txt_nameOFInfo.hidden =false;
[img_name setImage:[UIImage imageNamed:@"redot.png"]];
}
else
{
txt_nameOFInfo.hidden =true;
[img_name setImage:[UIImage imageNamed:@"gray-dot.png"]];
}
// NSLog(@"value %@",txt_lastName.text);
}
}
}
使用此代码并将委托添加到您的 UItextfield 我希望它对您有用