使用xib建立的textfield文本框的内容,判断其内容必须是数字。如果不是弹出对话框提示重输入

doublefei007 发布于 2014/04/22 22:43
阅读 1K+
收藏 0

我在网上找到了,通过委托实现。但是测试不成功。

网上代码如下:

 - (BOOT)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string :(id)sender

{

    NSCharacterSet *cs;

    if(textField == phone)

    {

        NSLog(@"phone 数字");

        cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERSinvertedSet];

        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

        BOOL basicTest = [string isEqualToString:filtered];

        if(!basicTest)

        {

            UIAlertView* alert = [[UIAlertView allocinitWithTitle:@"提示"

                                                            message:@"请输入数字"

                                                           delegate:nil

                                                  cancelButtonTitle:@"确定"

                                                  otherButtonTitles:nil];

            

            [alert show];

            //[alert release];

        return NO;

        }

    }

    

    //其他的类型不需要检测,直接写入

   return YES;

}

当我测试不成功,然后我改成了:

- (IBAction)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string :(id)sender

{

    NSCharacterSet *cs;

    if(textField == phone)

    {

        NSLog(@"phone 数字");

        cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERSinvertedSet];

        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

        BOOL basicTest = [string isEqualToString:filtered];

        if(!basicTest)

        {

            UIAlertView* alert = [[UIAlertView allocinitWithTitle:@"提示"

                                                            message:@"请输入数字"

                                                           delegate:nil

                                                  cancelButtonTitle:@"确定"

                                                  otherButtonTitles:nil];

            

            [alert show];

            //[alert release];

        //return NO;

        }

    }

    

    //其他的类型不需要检测,直接写入

   //return YES;

}

大神帮忙,就一个简单的文本框内容判断。有好的方法求知.求大神分享点判断技术给小弟我咯

加载中
0
叶子啊呵呵
既然一定要输入数字,那你把keyboard设置成number类型的不就好了,那样都不要判断…
doublefei007
doublefei007
谢谢,我想事先判读
0
r
ryannimei

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

    NSString *pattern = @"^\\d*$";

    NSString *text = [NSString stringWithFormat:@"%@%@",textField.text,string];

    NSError *error = nil;

    NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

    NSArray *matchs = [expression matchesInString:text options:NSMatchingReportProgress range:NSMakeRange(0, text.length)];

    if ([matchs count]>0) {

        NSTextCheckingResult *result = [matchs objectAtIndex:0];

        NSRange matchRange = [result range];

        if (NSEqualRanges(matchRange, NSMakeRange(0, text.length))) {

            return YES;

        }

    }

    return NO;

}

用正则表达式
返回顶部
顶部