UITextField作爲金額輸入框,輸入限制

UITextField的keyboardType設置:

UIKeyboardTypeNumberPad沒有“.”

UIKeyboardTypeDecimalPad有“.”。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (string.length)
    {
        unichar single = [string characterAtIndex:0]; // 當前輸入的字符
        if ((single >= '0' && single <= '9') || single == '.')  // 數據正確
        {
            // 首位不能爲小數點
            if (!textField.text.length)  // 還沒有輸入,首位
            {
                if (single == '.')
                {
                    return NO;
                }
                return YES;
            }
            else
            {
                // 不是首位,判斷其他
                NSRange pointRange = [textField.text rangeOfString:@"."];
                if (pointRange.length)
                {
                    // 存在點,小數點之後2位
                    if (textField.text.length - pointRange.location > 2 || single == '.')
                    {
                        return NO;
                    }
                    return YES;
                }
                else
                {
                    // 不存在點
                    if (![textField.text floatValue])
                    {
                        // 等於0,只能輸入點
                        if (single == '.')
                        {
                            return YES;
                        }
                        return NO;
                    }
                    else
                    {
                        // 大於0,最大5位數
                        if (textField.text.length >= 5 && single != '.')
                        {
                            return NO;
                        }
                        return YES;
                    }
                }
            }
        }
        return NO;
    }
    return YES;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章