Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios6 在&;之前限制位数;UITextField中的小数点后_Ios6_Uitextfield_Limit_Digits_Uitextfielddelegate - Fatal编程技术网

Ios6 在&;之前限制位数;UITextField中的小数点后

Ios6 在&;之前限制位数;UITextField中的小数点后,ios6,uitextfield,limit,digits,uitextfielddelegate,Ios6,Uitextfield,Limit,Digits,Uitextfielddelegate,我想限制在UITextField中输入的数字。这是我的密码 #define MAX_NO_OF_DIGITS_BEFORE_DECIMAL 8 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {     switch (textField.tag)     {         case BUY

我想限制在UITextField中输入的数字。这是我的密码

#define MAX_NO_OF_DIGITS_BEFORE_DECIMAL 8

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    switch (textField.tag)
    {
        case BUY_ITEM_TEXTFIELD_TAG:
        {
            if (![textField.text length]>0) {
                textField.text = [CURRENCY_TYPE stringByAppendingFormat:@"%@",self.buyTextField.text];
            }
        }
            break;
        case BID_INCREMENT_TEXTFIELD_TAG:
        {
            if (![textField.text length]>0) {
       textField.text = [CURRENCY_TYPE stringByAppendingFormat:@"%@",self.bidTextField.text];
            }
        }
            break;
        case STARTING_BID_TEXTFIELD_TAG:
        {
            if (![textField.text length]>0) {
        textField.text = [CURRENCY_TYPE stringByAppendingFormat:@"%@",self.startingBidTextField.text];
            }
        }
            break;
        case SHIPPING_CHARGES_TEXTFILED:
        {
            if (![textField.text length]>0) {
         textField.text = [CURRENCY_TYPE stringByAppendingFormat:@"%@",self.chargesTextField.text];
            }
        }
            break;
        default:
            break;
    }
    
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    
    // Check if we have 8 digits before decimal points
    NSString *tempStr = [newString stringByReplacingOccurrencesOfString:CURRENCY_TYPE withString:@""];
    if ([tempStr length]==MAX_NO_OF_DIGITS_BEFORE_DECIMAL)
    {
        // Check if we have only 1 decimal point
        NSArray  *arrayOfString = [newString componentsSeparatedByString:@"."];
        if ([arrayOfString count] > 2 )
        {
            return NO;
        }
        else {
            textField.text = [NSString stringWithFormat:@"%@%@%@",CURRENCY_TYPE,tempStr,@"."];
        }
    }
    
    
    // Check if we have only 1 decimal point
    NSArray  *arrayOfString = [newString componentsSeparatedByString:@"."];
    if ([arrayOfString count] > 2 )
    {
        return NO;
    }
    
    
    // Check if we have only 2 digits after decimal point
    if([arrayOfString count]>=2)
    {
        NSString *sepStr=[NSString stringWithFormat:@"%@",[arrayOfString objectAtIndex:1]];
        return !([sepStr length]>2);
    }
    
    return YES;
    
}
但我的问题是,当我输入12345678时,它会将小数点放在8后面&再次放在8后面,因此我的输出看起来是
12345678.8
而不是
12345678.

我想要达到的是

1) 用户只能输入小数点前的最大位数和小数点后的2位数

我不明白为什么最后8个会在这里重复。有人能帮我吗


提前感谢。

首先,在每个步骤中添加日志记录,以查看发生了什么,或者进行调试


问题是您正在修改字符串(以创建newString变量)。然后将句点添加到末尾,并将其设置为文本字段的新值。然后返回yes(后面的检查不使用新的文本字段值)。因此,添加“8”和句点,然后要求框架添加“8”。

首先,在每个步骤中添加日志记录以查看发生的情况,或者进行调试

问题是您正在修改字符串(以创建newString变量)。然后将句点添加到末尾,并将其设置为文本字段的新值。然后返回yes(后面的检查不使用新的文本字段值)。因此,添加“8”和句点,然后要求框架添加“8”。

尝试下面的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string
{

}

尝试下面的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string
{

}