zoukankan      html  css  js  c++  java
  • iPad开发--UItextfield中输入类似于数学计算上的数字的方法

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
       
            NSCharacterSet*cs;
            
            cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
            
            NSString*filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
            BOOL  basicTest = [string isEqualToString:filtered];
            // 只能输入数字小数点
            if(!basicTest) { // 不相等
                return NO;
            }
            
            if ([textField.text rangeOfString:@"."].location==NSNotFound) {
                isHaveDian=NO;
            }
            
            // 第一位必须为数字不能为小数点
            if ([string length]>0)
            {
                unichar single=[string characterAtIndex:0];//当前输入的字符
                if ((single >='0' && single<='9') || single=='.')//数据格式正确
                {
                    //首字母不能为0和小数点
                    if([textField.text length]==0){
                        if(single == '.'){
                            [textField.text stringByReplacingCharactersInRange:range withString:@""];
                            return NO;
                        }
                    }
                        if (single=='.')
                        {
                            if(!isHaveDian)//text中还没有小数点
                            {
                                isHaveDian=YES;
                                return YES;
                            }else
                            {
                                [textField.text stringByReplacingCharactersInRange:range withString:@""];
                                return NO;
                            }
                        }
                        else
                        {
                            if (isHaveDian)//存在小数点
                            {
                                //判断小数点的位数
                                NSRange ran=[textField.text rangeOfString:@"."];
                                int tt=range.location-ran.location;
    //                            if (tt <= 2){
    //                                return YES;
    //                            }else{
    //                                return NO;
    //                            }
                            }
                            else
                            {
                                return YES;
                            }
                        }
                    }else{//输入的数据格式不正确
                        [textField.text stringByReplacingCharactersInRange:range withString:@""];
                        return NO;
                    }
                }
                else
                {
                    return YES;
                }
            }
    }

     
  • 相关阅读:
    Best Cow Line(POJ No.3617)
    迷宫的最短路径
    Lak3 Counting(POJ No.2386)
    【日志】-2013.11.02
    用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(上)
    用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(下)
    【日志】-2013.11.01
    (转载)HTML与XHTML有什么区别
    (转载)linux环境变量
    转载-KMP算法前缀数组优雅实现
  • 原文地址:https://www.cnblogs.com/huangh/p/4186996.html
Copyright © 2011-2022 走看看