将文本字段条目限制为仅一个小数点

uts*_*iem 6 decimal-point objective-c uitextfield

我创建了一个文本字段来输入金额.我希望用户只能输入一个小数点.我在-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string方法中实现了它.

在一般情况下,它工作正常,但如果按下退格键并删除单个小数点,之后它仍然假定已输入小数点,因此不再接受小数点.

decimalPointEntered每当通过按退格键删除小数点时,我需要重置标志.怎么做 ?

小智 10

这对我来说很好.试试这段代码:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    NSArray *sep = [newString componentsSeparatedByString:@"."];
    if([sep count] >= 2)
    { 
        NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
        return !([sepStr length]>1);
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*ler 8

这是我使用的:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (!numberFormatter) {
        numberFormatter = [[NSNumberFormatter alloc]init];
        //[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

    }
    NSNumber *test = [numberFormatter numberFromString:[self.text stringByAppendingString: string]];  // in case we entered two decimals

    return (test != nil);

}
Run Code Online (Sandbox Code Playgroud)