开发者社区> 问答> 正文

问答 当前位置:问答 » 技术问答 » iOS 搜 索 使用xib建立的textfield文本框的内容,判断其内容必须是数字。如果不是弹出对话框提示重输入

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

网上代码如下:

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

{

NSCharacterSet *cs; 

if(textField == phone) 

{ 

    NSLog(@"phone 数字"); 

    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet]; 

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

    BOOL basicTest = [string isEqualToString:filtered]; 

    if(!basicTest) 

    { 

        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" 

                                                        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:NUMBERS] invertedSet]; 

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

    BOOL basicTest = [string isEqualToString:filtered]; 

    if(!basicTest) 

    { 

        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" 

                                                        message:@"请输入数字" 

                                                       delegate:nil 

                                              cancelButtonTitle:@"确定" 

                                              otherButtonTitles:nil]; 

         

        [alert show]; 

        //[alert release]; 

    //return NO; 

    } 

} 

 

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

//return YES;

}

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

展开
收起
杨冬芳 2016-06-29 16:04:54 2627 0
1 条回答
写回答
取消 提交回答
  • IT从业

    既然一定要输入数字,那你把keyboard设置成number类型的不就好了,那样都不要判断…想事先判读

    -(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; 
    
    } 
    
    用正则表达式 
    
    2019-07-17 19:49:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载