iOS判斷textfield輸入內容,只能有一個小數點,第一個數字不能位小數點等輸入價格的

我在優化App的時候,看到價格不能隨意輸入,于是就在網上找了點案例。發現有一款方法非常好,能控制你的textfield,首字符不能輸入“0”或者“.”,控制小數點后面的分位數以及不讓小數點出現兩次。廢話不多說,直接粘貼demo。

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

{
    
    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 == '.')
                {
                    
                    [self showMyMessage:@"親,第一個數字不能為小數點!"];
                    
                    [textField.text stringByReplacingCharactersInRange:range withString:@""];
                    
                    return NO;
                    
                }
                
                if (single == '0')
                {
                    
                    [self showMyMessage:@"親,第一個數字不能為0!"];
                    
                    [textField.text stringByReplacingCharactersInRange:range withString:@""];
                    
                    return NO;
                    
                }
                
            }
            
            //輸入的字符是否是小數點
            
            if (single == '.')
            {
                
                if(!isHaveDian)//text中還沒有小數點
                {
                    
                    isHaveDian = YES;
                    
                    return YES;
                    
                }else{
                    
                    [self showMyMessage:@"親,您已經輸入過小數點了!"];
                    
                    [textField.text stringByReplacingCharactersInRange:range withString:@""];
                    
                    return NO;
                    
                }
                
            }else{
                
                if (isHaveDian) {//存在小數點
                    
                    //判斷小數點的位數
                    
                    NSRange ran = [textField.text rangeOfString:@"."];
                    
                    if (range.location - ran.location <= 2) {
                        
                        return YES;
                        
                    }else{
                        
                        [self showMyMessage:@"親,您最多輸入兩位小數!"];
                        
                        return NO;
                        
                    }
                    
                }else{
                    
                    return YES;
                    
                }
                
            }
            
        }else{//輸入的數據格式不正確
            
            [self showMyMessage:@"親,您輸入的格式不正確!"];
            
            [textField.text stringByReplacingCharactersInRange:range withString:@""];
            
            return NO;
            
        }
        
    }
    
    else
        
    {
        
        return YES;
        
    }
    
}

-(void)showMyMessage:(NSString*)aInfo {
    
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:aInfo delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
    
    [alertView show];
    
}


如果您覺得我的文章內容對您有幫助,請點贊+關注。我會推薦出更多有用的文章。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容