【iOS开发】UITextField只允许输入数字和小数点

只允许输入数之和小数点,且只能输入一个小数点

#define NUMBERS @"0123456789."
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    NSCharacterSet *cs;
    NSString * textStr = nil;
    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
    NSString *filtered = [[text componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    BOOL basicTest = [text isEqualToString:filtered];
    if(!basicTest )
    {
        return NO;
    }
    NSString * toBeString = [textView.text stringByReplacingCharactersInRange:range withString:text];
    NSLog(@"%@,%@",toBeString,text);

    if ([toBeString rangeOfString:@"."].location != NSNotFound&&[[toBeString componentsSeparatedByString:@"."] objectAtIndex:1].length>2 )
    {
        //控制输入文本的长度
        return  NO;
    }
    else if ([toBeString rangeOfString:@"."].location == NSNotFound&&toBeString.length>6){
        //控制输入文本的长度
        return  NO;

    }
    else if ([textView.text rangeOfString:@"."].location != NSNotFound&& [text isEqual:@"."]){
        //控制输入文本的长度
        return  NO;
        
    }
    else if (range.location == 0 && [text isEqual:@"."]){
    
        return NO;
    }

    else{
        if ([text isEqualToString:@""]&&textView.text.length!= 0) {
            textStr  = [textView.text substringToIndex:textView.text.length-1];
        }
        else{
            textStr = [textView.text stringByAppendingString:text];
            
        }

    }

    return YES;
}

你可能感兴趣的:(【iOS开发】UITextField只允许输入数字和小数点)